题解 | #找出字符串中第一个只出现一次的字符#

找出字符串中第一个只出现一次的字符

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);
            }
        }
    }
全部评论

相关推荐

码农顶针:估计让你免费辅导老板孩子的学习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务