1. 程式人生 > >leetcode 387. 字串中的第一個唯一字元

leetcode 387. 字串中的第一個唯一字元

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事項:您可以假定該字串只包含小寫字母。

思路:尋找字串中的第一個不重複出現的字元,一種判斷的思路是:某個字元的首次出現位置與最後出現位置相同,則可判斷該字元在字串中不重複。呼叫標頭檔案<string>中的兩個函式 find_first_of() 和 find_last_of() ,各自返回值為首次出現位置和末次出現位置,當兩個返回值相等是,得到不重複出現的字元。
class Solution {
public:
    int firstUniqChar(string s) {
        for(int i = 0 ; i < s.size() ; i ++)
        {
            if(s.find_first_of(s[i]) == s.find_last_of(s[i]))
                return i;
        }
        return -1;
    }
};
 

int firstUniqChar(string s) 
{
    int counter[26] = {0};
    for(int i=0; i<s.length(); ++i)
        ++counter[s[i] - 'a'];

    for (int i=0; i<26; ++i)
    {
        if(1 == counter[s[i] - 'a'] )
            return i;
    }

    return -1;
}