之前在面試的時候碰到的小題目,不難,但是對於這道題的解法還是有很多意思的。
求字符串中出現的第一個不重複的字符 如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的相關方法。