题号387:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"返回 0.
s = "loveleetcode",返回 2.
解题思路:
第一种,暴力破解,两层循环遍历,当第二层循环结束,都没有找到相同的字符,则返回该字符的位置;
第二种,先统计后查询,第一遍循环统计各个小写字母出现的次数,第二遍循环,当遇到统计次数为1的,即返回该字母位置。
代码实现:
第一种:
class Solution {
public:
int firstUniqChar(string s) {
for(int i=0;i
int j=0;
for(;j
if(i!=j && s[i]==s[j]){
break;
}
}
if(j==s.length())
return i;
}
return -1;
}
};
第二种:
class Solution {
public:
int firstUniqChar(string s) {
int count[26]=;
for(int i=0;i
count[s[i]-'a']++;
}
for(int i=0;i
if(count[s[i]-'a']==1){
return i;
}
}
return -1;
}
};
领取专属 10元无门槛券
私享最新 技术干货