题目是这样的:找出字符串中第一个只出现一次的字符
输入描述:
输入一个非空字符串
输出描述:
输出第一个只出现一次的字符,如果不存在输出-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();
}
}