题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
package xidian.lili.niuke;
import java.util.HashMap;
import java.util.Set;
public class FirstNoRepeatingChar {
public static int FirstNotRepeatingChar(String str) {
char c[]=str.toCharArray();
HashMap<Character,Integer> map=new HashMap();
for(int i=0;i<c.length;i++){
System.out.print(c[i]);
if(map.containsKey(c[i])){
map.put(c[i], map.get(c[i])+1);
}else{
map.put(c[i],1);
}
}
for(int i=0;i<c.length;i++){
if(map.get(c[i])==1){
return i;
}
}
return -1;
}
public static void main(String[] args) {
String s="NXWtnzyoHoBhUJaPauJaAitLWNMlkKwDYbbigdMMaYfkVPhGZcrEwp";
System.out.println(FirstNotRepeatingChar(s));
}
}
map存储完自动排序,是红黑树实现的会调整key的顺序所以不能用迭代器遍历map来找第一个value为1的key
需要遍历字符数组,依此查看当前字符在map中的value是否为1