3120.统计特殊字母的数量 I:(手写)哈希表

【LetMeFly】3120.统计特殊字母的数量 I:(手写)哈希表

力扣题目链接:https://leetcode.cn/problems/count-the-number-of-special-characters-i/

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

返回 word 特殊字母 的数量。

 

示例 1:

输入:word = "aaAbcBC"

输出:3

解释:

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

示例 2:

输入:word = "abc"

输出:0

解释:

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

示例 3:

输入:word = "abBCab"

输出:1

解释:

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

 

提示:

  • 1 <= word.length <= 50
  • word 仅由小写和大写英文字母组成。

解题方法:哈希表

遍历一般字符串并把所有出现过的字符放入哈希表中,从0到25遍历这26个字母,看哪个字母的大小写都出现过。

有办法使用数组代替(作为)哈希表吗?以及有办法使用52长度的数组作为哈希表吗?有,判断下大小写放入数组对应的位置就好。

  • 时间复杂度$O(len(word)+C)$,其中$C=26\times 2$
  • 空间复杂度$O(C)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
* @LastEditTime: 2026-05-26 23:53:14
*/
class Solution {
public:
int numberOfSpecialChars(string word) {
bool lower[26] = {false}, upper[26] = {false};
for (char c : word) {
if ('a' <= c && c <= 'z') {
lower[c - 'a'] = true;
} else {
upper[c - 'A'] = true;
}
}

int ans = 0;
for (int i = 0; i < 26; i++) {
ans += lower[i] && upper[i];
}
return ans;
}
};

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源


3120.统计特殊字母的数量 I:(手写)哈希表
https://blog.letmefly.xyz/2026/05/26/LeetCode 3120.统计特殊字母的数量I/
作者
发布于
2026年5月26日
许可协议