给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.
注意事项:您可以假定该字符串只包含小写字母。
思路:用LinkedHashMap结构来存储字符串,字符串的元素作为key,元素出现次数作为value;因为LinkedHashMap中的元素是顺序存储的,只需找出第一次出现value=1的key即可。
class Solution {
public int firstUniqChar(String s) {
LinkedHashMap<Character,Integer> map=new LinkedHashMap<Character,Integer>();
for(char c:s.toCharArray()) {
if(map.containsKey(c)) {
map.put(c, map.get(c)+1);
}else {
map.put(c, 1);
}
}
System.out.println(map);
//遍历map
Iterator entries=map.entrySet().iterator();
while(entries.hasNext()) {
Map.Entry entry=(Map.Entry) entries.next();
Character character=(Character) entry.getKey();
Integer integer=(Integer) entry.getValue();
// System.out.println(character+" "+integer);
if(integer==1) {
return s.indexOf(character);
}
}
return -1;
}
}