出现次数,请考虑哈希表,在保留输入顺序时,请使用linkedHashMap(插入顺序和访问顺序)
图解如下:
首次出现,Set.
/**
* 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置,
* 如果没有则返回 -1(需要区分大小写).(从0开始计数)
* @param str 字符串
* @return 第一个只出现一次的字符的位置
*/
public int FirstNotRepeatingChar(String str) {
if(str==null||str.length()==0){
return -1;
}
Map<Character,Integer> dict=new LinkedHashMap<>();
char[]cs=str.toCharArray();
for(char c:cs){
dict.put(c,dict.getOrDefault(c,0)+1);
}
char c='A';
for(Map.Entry<Character,Integer> d:dict.entrySet()){
if(d.getValue()>1){
c=d.getKey();
break;
}
}
for(int i=0;i<cs.length;i++){
if(cs[i]==c){
return i;
}
}
return 0;
}



京公网安备 11010502036488号