保留输入顺序的哈希表
第一个只出现一次的字符
http://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c
出现次数,请考虑哈希表,在保留输入顺序时,请使用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; }