原题链接
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。
例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。
当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输入描述
一个字符串
输出描述
第一个只出现一次的字符。若没有,则输出-1。
示例
输入:
go
输出:
g
输入:
google
输出:
l
参考解法
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char s[] = sc.next().toCharArray();
if(s.length<1) {
System.out.println(-1);
return ;
}
Map<Character, Integer> m = new LinkedHashMap<Character, Integer>();
for (int i = 0; i < s.length; i++) {
if(m.containsKey(s[i])) {
m.put(s[i], -1);
}else {
m.put(s[i], 1);
}
}
for (char ss: m.keySet()) {
if(m.get(ss)==1) {
System.out.println(ss);
return ;
}
}
System.out.println(-1);
}
}