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

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

示例 1
输入:word = "aaAbcBC"
输出:3
解释:word 中的特殊字母是 'a'、'b' 和 'c'。

示例 2:
输入:word = "abc"
输出:0
解释:word 中不存在大小写形式同时出现的字母。

此题为leetcode上第394场周赛中的一道简单题。解决方法有多种,对于小白来说,我们的思路可能是这样的:遍历字符串word,统计出每个字母出现的次数,如果该字母的大小写形式出现的数量都大于0,则计数器count++。
于是,我们可以定义一个空间为100的数组(大小写字母总共52个,A的ASCII码为65,a的ASCII码为97,定义一个空间为100的稍大数组非常合适),接下来遍历字符串word,将数组中下标为word.charAt(i)-'A'的元素值加一,如下:

int count = 0;
int [] arr = new int[100];
for(int i=0; i<word.length(); i++){
    arr[word.charAt(i)-'A']++;                                                                                                          
}

之后,我们遍历数组arr(范围从0到26),若arr[i]>0 && arr[i+32]>0,则count++,如下:

for(int i=0; i<26; i++){
    if(arr[i]>0 && arr[i+32]>0){
        count++;
    }
}

总体代码如下:

class Solution {
    public int numberOfSpecialChars(String word) {
        int count = 0;
        int [] arr = new int[100];
        for(int i=0; i<word.length(); i++){
            arr[word.charAt(i)-'A']++;                                                                                                          
        }
        for(int i=0; i<26; i++){
            if(arr[i]>0 && arr[i+32]>0){
                count++;
            }
        }
        return count;
    }
}
posted @ 2024-06-04 20:38  平生三伏时  阅读(50)  评论(0)    收藏  举报