给定一个字符串,找到第一个非重复字符并输出
题干
leetcode 387. First Unique Character in a String
思路
两次循环,
第一次循环,使用map,key是字符,value记录出现的次数
第二次循环,找到value为1的key在字符串中的位置
代码
class Solution {
public int firstUniqChar(String s) {
Map<Character,Integer>map=new HashMap<Character,Integer>();
char [] cstr=s.toCharArray();
for(char c:cstr){
//c有对应的value就取,如果没有,默认为0,然后将这个值+1,计数
map.put(c,map.getOrDefault(c,0)+1);
}
int i=0;
for(char c:cstr){
if(map.get(c)==1)
return i;
i++;
}
return -1;
}
}
python
class Solution:
def firstUniqChar(self, s):
#这个count包含了字符和其对应的出现次数
count=collections.Counter(s)
index=0
for c in s:
if count[c]==1:
return index
else:
index+=1
return -1