题解 | #字符流中第一个不重复的字符#

字符流中第一个不重复的字符

http://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720

使用LinkedHashMap,可以保持输出的顺序和加入的顺序是一致的,然后使用map.getOrDefault(ch, 0)方法判断是否有值,没有的话加一,有的话在原来的数字基础上加一,最终在map里面可以得到每个字符的个数,然后遍历输出,当个数为一的时候,就输出字符,不再遍历,负责会覆盖之前的字符,一趟遍历之后,发现没有个数为一的字符,此时返回#号。


public class Solution {
    Map<Character, Integer> map = new LinkedHashMap<>();

    public void Insert(char ch) {
        map.put(ch, map.getOrDefault(ch, 0) + 1);
    }

    public char FirstAppearingOnce() {
        char result = '#';
        for (Character c : map.keySet()) {
            if (map.get(c) == 1) {
                result = c;
                break;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        StringBuilder caseout = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            solution.Insert(str.charAt(i));
            caseout.append(solution.FirstAppearingOnce());
        }
        System.out.println(caseout);
    }
}
全部评论

相关推荐

找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务