題目是這樣的:找出字符串中第一個只出現一次的字符
輸入描述:
輸入一個非空字符串
輸出描述:
輸出第一個只出現一次的字符,如果不存在輸出-1
我的做法如下:
package test;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
char[] ch = in.nextLine().toCharArray();
LinkedHashMap<Character, Integer> map = new LinkedHashMap<Character, Integer>();
for (int i = 0; i < ch.length; i++) {
if (map.containsKey(ch[i])) {
int count = map.get(ch[i]);
map.put(ch[i], ++count);
} else
map.put(ch[i], 1);
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
Integer value = entry.getValue();
Character key = entry.getKey();
if (value == 1)
System.out.println(key);
}
}
}
自我感覺良好,本地測試完美,但在線測評死活不通過,多番調試未能解決。
同時看到一種極爲巧妙美妙的解法,值得借鑑:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
char[] cs = str.toCharArray();
for(int i = 0; i < cs.length; i++){
if(str.indexOf(cs[i]) == str.lastIndexOf(cs[i])){
System.out.println(cs[i]);
break;
}
}
}
sc.close();
}
}