Leetcode 字符串中的第一个唯一字符

本文最后更新于:2019年2月1日 晚上

地址:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/5/strings/34/

题目

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事项:您可以假定该字符串只包含小写字母。

我的解决方案

class Solution {
public:
    int firstUniqChar(string s) {
        int addr = -1;  //保存第一个不重复的字符的索引并初始化为-1
        if (s.size() == 1)
            addr = 0;
        for (int i = 0; i < s.size(); i++) {  //遍历整个字符串的每一个字符
            bool isUniq = true;    //判断当前字符s[i]是否唯一
            for (int j = 0;j < s.size(); j++) {
                if (i == j)
                    continue;
                if (s[j] == s[i]) {  //如果找到与s[i]相同的字符
                    isUniq = false;  //说明s[i]不唯一,置isUniq为false
                    break;
                }
            }
            if (isUniq == true) {   //isUniq为true说明上面的循环中没有找到与s[i]相同的字符
                addr = i;   //i即第一个不重复的字符的索引
                break;   //后序字符不必不能继续判断,否则如果后续还有唯一字符就会重写addr导致结果错误
            }
        }
        return addr;
    }
};