題目說明
給定一個字符串十厢,找到它的第一個不重復的字符,并返回它的索引探橱。如果不存在申屹,則返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
注意事項:您可以假定該字符串只包含小寫字母隧膏。
題目解答
運用 flag 的典型例子哗讥,我的思路就是:
- 設一標記數(shù)組,初始化為0胞枕,用來存儲字符串中各個字符出現(xiàn)的次數(shù)
- 之后按照字符串的順序對 flag 數(shù)組進行搜索杆煞,flag 中出現(xiàn)的第一個元素為1的所對應的字母就是第一個唯一字符
- 最后,將字符在字符串中所對應的下標輸出即可
代碼:
int firstUniqChar(char* s) {
int flag[26] = {0};
for (int i = 0; s[i] != '\0'; i++)
flag[s[i]-'a']++;
for (int i = 0; s[i] != '\0'; i++)
if (flag[s[i]-'a'] == 1)
return i;
return -1;
}