利用LinkedHashMap的特性:保持插入的顺序
第一个只出现一次的字符
http://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c
import java.util.*; import java.util.Map.Entry; public int FirstNotRepeatingChar(String str) { if(str==null||str.equals("")||str.length()==1) return -1; Map<Character,Integer> map = new LinkedHashMap<Character, Integer>(); for(int i=0;i<str.length();i++){ char c = str.charAt(i);//key if(!map.containsKey(c)){//如果不存在key map.put(c,i); }else{//修改值,索引变为-1的表示已经出现过一次了 map.put(c,-1); } } //利用LinkedHashMap的特性按插入的顺序从头开始找索引不是负数的值,并返回 for(Entry<Character,Integer> entry:map.entrySet()){ if(entry.getValue()>=0) return entry.getValue(); } //没有找到说明都重复,返回-1 return -1; }