【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 <= 50word仅由小写和大写英文字母组成。
解题方法:哈希表
遍历一般字符串并把所有出现过的字符放入哈希表中,从0到25遍历这26个字母,看哪个字母的大小写都出现过。
有办法使用数组代替(作为)哈希表吗?以及有办法使用52长度的数组作为哈希表吗?有,判断下大小写放入数组对应的位置就好。
- 时间复杂度O ( l e n ( w o r d ) + C ) O(len(word)+C)O(len(word)+C),其中C = 26 × 2 C=26\times 2C=26×2
- 空间复杂度O ( C ) O(C)O(C)
AC代码
C++
/* * @LastEditTime: 2026-05-26 23:53:14 */classSolution{public:intnumberOfSpecialChars(string word){boollower[26]={false},upper[26]={false};for(charc:word){if('a'<=c&&c<='z'){lower[c-'a']=true;}else{upper[c-'A']=true;}}intans=0;for(inti=0;i<26;i++){ans+=lower[i]&&upper[i];}returnans;}};同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源