之前在面试的时候碰到的小题目,不难,但是对于这道题的解法还是有很多意思的。
求字符串中出现的第一个不重复的字符 如acdefcad 返回 e 。
解法一:先将字符串变成字符数组,利用HashMap存储字符,key为字符,value为字符的个数。最后从头开始循环字符数组并与HashMap对比得到结果。
String str = "fjSfjldsjfdlsJFLjfdjfkldsJFFFFFFFFJJJJJFASDjkfsdlfjalsfjdlsaf";
char[] message = str.toCharArray();
Map<String,Integer> map = new HashMap<String,Integer>();
for(char i :message){
if(map.containsKey(String.valueOf(i))){
map.put(String.valueOf(i), map.get(String.valueOf(i))+1);
}else{
map.put(String.valueOf(i), 1);
}
}
for (int i = 0; i < message.length; i++) {
if(map.containsKey(String.valueOf(message[i]))&&map.get(String.valueOf(message[i]))==1){
System.out.println("该字符串中出现的第一个不重复的字符是: "+message[i]);
break;
}
}
解法二:与第一种方法大致一样,但使用的是LinkedHashMap,LinkedHashMap的特点是能够记住插入的顺序,换言之,循环LinkedHashMap找到第一个Value值为1的key就是题解。
解法三:使用String的相关方法。