题目
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
思路
从左到右统计字符出现的个数,如果发现某一个字符只出现一次就返回该字符的索引值。
- 将字符串转换成字符数组
- 用mark数组记录字符出现的次数
代码
class Solution {
public int firstUniqChar(String s) {
int len = s.length();
char[] str = s.toCharArray(); //将字符串转换成字符数组
int[] mark = new int[256]; //用mark数组记录字符出现的次数
for(int i=0; i<len; i++){
if(mark[str[i]] == 0){ //如果该字符之前没有出现过
mark[str[i]] = 1;
for(int j=i+1; j<len; j++){ //查看该字符之后有没有出现过
if(str[i]==str[j]) mark[str[i]]++;
}
if(mark[str[i]]==1) return i; //等于1代表该字符之后没有出现过
}
}
return -1;
}
}