题解 | #找出字符串中第一个只出现一次的字符#
找出字符串中第一个只出现一次的字符
https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4
public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String a=in.nextLine(); String[] b=a.split(""); HashSet<String>hashSet=new HashSet<>(Arrays.asList(b));//把所有可能的元素结果放进hashset里 StringBuilder stringBuilder=new StringBuilder(a); StringBuilder c=new StringBuilder(); c.append(stringBuilder.reverse());//翻转过来方便从后往前找 for (int i = 0; i < b.length; i++) { if(!hashSet.contains(b[i])){//判断是不是之前读过的 continue; } if(i==a.length()-1-c.indexOf(b[i])){//如果从后往前和从前往后找到的位置一样就说明是唯一的 System.out.println(b[i]); break; } hashSet.remove(b[i]);//发现前后找的位置不一样就说明不是这个元素,下次读到直接跳 } if(hashSet.size()==0){//因为读一个元素就删一个元素,删干净都没找到就说明没有,输出-1 System.out.println(-1); } } }