字串中的第一個唯一字元-LeetCode
題目描述:
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
注意事項:您可以假定該字串只包含小寫字母。
首先看注意事項--假定字串只包含小寫字母,那麼就好辦了,因為字母一共才26個。
好了,看思路:
1)因為小寫字母只有26個,所以我們可以申請一個數組來存放每個字母出現的次數,
2)遍歷原陣列,將每個字母-'a'後存入字母陣列a中,於是a的下標0到25就是對應的字母'a'到'z'了,自加後對應的值就是字母在字串中出現的次數。
3)再一次遍歷原陣列,直接檢視s[i]對應在字母陣列中的值是否為1,如果是,直接返回i,如果不是,繼續遍歷,
4)到最後也沒有找到出現一次的字母,返回-1.
程式碼如下:
int firstUniqChar(char* s) {
int len=strlen(s);
int a[26];
memset(a,0,sizeof(int)*(26));
for(int i=0;i<len;i++){
a[s[i]-'a']++;
}
for(int i=0;i<len;i++){
if(a[s[i]-'a']==1) return i;
}
return -1;
}