列表

详情


100294. 统计特殊字母的数量 I

给你一个字符串 word。如果 word 中同时存在某个字母的小写形式和大写形式,则称这个字母为 特殊字母

返回 word 特殊字母 的数量。

 

示例 1:

输入:word = "aaAbcBC"

输出:3

解释:

word 中的特殊字母是 'a''b''c'

示例 2:

输入:word = "abc"

输出:0

解释:

word 中不存在大小写形式同时出现的字母。

示例 3:

输入:word = "abBCab"

输出:1

解释:

word 中唯一的特殊字母是 'b'

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int numberOfSpecialChars(string word) { } };

python3 解法, 执行用时: 37 ms, 内存消耗: 16.4 MB, 提交时间: 2024-04-21 23:50:54

class Solution:
    def numberOfSpecialChars(self, word: str) -> int:
        word = set(word)
        return sum(chr(i) in word and chr(i + 32) in word for i in range(65, 91))

golang 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2024-04-21 23:49:47

func numberOfSpecialChars(word string) int {
	mask := [2]int{}
	for _, c := range word {
		mask[c>>5&1] |= 1 << (c & 31)
	}
	return bits.OnesCount(uint(mask[0] & mask[1]))
}

python3 解法, 执行用时: 35 ms, 内存消耗: 16.5 MB, 提交时间: 2024-04-21 23:49:32

class Solution:
    def numberOfSpecialChars(self, word: str) -> int:
        mask = [0, 0]
        for c in map(ord, word):
            mask[c >> 5 & 1] |= 1 << (c & 31)
        return (mask[0] & mask[1]).bit_count()

java 解法, 执行用时: 1 ms, 内存消耗: 41.3 MB, 提交时间: 2024-04-21 23:49:16

class Solution {
    public int numberOfSpecialChars(String word) {
        int[] mask = new int[2];
        for (char c : word.toCharArray()) {
            mask[c >> 5 & 1] |= 1 << (c & 31);
        }
        return Integer.bitCount(mask[0] & mask[1]);
    }
}

cpp 解法, 执行用时: 3 ms, 内存消耗: 7.7 MB, 提交时间: 2024-04-21 23:49:02

class Solution {
public:
    int numberOfSpecialChars(string word) {
        int mask[2]{};
        for (char c : word) {
            mask[c >> 5 & 1] |= 1 << (c & 31);
        }
        return __builtin_popcount(mask[0] & mask[1]);
    }
};

上一题