题解 | #字符个数统计#

字符个数统计

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 两个长整型数字二进制位和为128位 刚好存储0-127的ascii码是否出现过
        long a = 0L, b = 0L;
        for (char c : in.nextLine().toCharArray()) {
            // 掩码 用于计算c是否出现过
            long mask = 1L << c;
            // 0 - 63
            if (c < Long.SIZE) {
                a = (a & mask) == 0 ? a ^ mask : a;
            // 64 - 127
            } else {
                b = (b & mask) == 0 ? b ^ mask : b;
            }
        }
        // 汉明重量和即为不同数
        System.out.println(Long.bitCount(a) + Long.bitCount(b));
    }
}                    
写完看到题解有人用BitSet 学到了 一直不知道Java还有这个类 这个思路和bitset的思路是一样的
#华为笔试#
全部评论

相关推荐

头像
昨天 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务