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

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

https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int n = str.length();
        BitSet bitset = new BitSet();
        for (int i = 0; i < n; i++) {
            // 搜索过的字符不再搜索
            if (bitset.get(str.charAt(i))) {
                continue;
            }
            int j = n - 1;
            // 反向搜索 直到遇到相同的字符 或者 搜索到当前第i个字符为止
            for (; j > i && str.charAt(j) != str.charAt(i); j--) {}
            // 如果 j == i 则表明反向搜索当前字符了 即当前字符只出现了一次 
            if (j == i) {
                System.out.print(str.charAt(i));
                return;
            }
            bitset.set(str.charAt(i));
        }
        System.out.println(-1);
    }
}


#华为笔试#
全部评论

相关推荐

11-13 12:02
门头沟学院 Java
我要娶个什么名:好骂,好骂 别学计算机就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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