#计算某字符出现次数#__huawei_no.2-1

计算某字符出现次数

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

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    string str ;
    char  s; 
    getline(cin,str);
    cin >> s;
    unordered_map<char,int>mp;
    for(auto i : str){
        if( i >= 'A' && i <= 'Z'){
            i = i -'A' +'a';
        }
        mp[i]++;
    }
    if(s >= 'A' && s <= 'Z'){
        s = s -'A' +'a';
    }
    cout << mp[s] <<endl;

}
// 64 位输出请用 printf("%lld")

1、首先,题目的要求是读取两个,一个字符串,一个字符,要分开来读,不然解不了这个题;

2 、另外,这个题一眼能够想到是哈希表来做,说明之前的训练是有进步的,哈希表确实快,但是还是要进一步的加深对哈希表的掌握和认识,想到快,但是用起来不够快;

3、题目中是不区分大小写的,所以,在细节上还需要再把握一下,将字符统一转一个格式,这样方便操作;

4、将 unordered_map<char, int> 更改为 unordered_map<char, size_t> 的好处在于类型匹配和数据表示的准确性。

以下是几个原因说明为什么使用 size_t 可能是更好的选择:

  1. 类型匹配:size_t 是一种无符号整数类型,它是 C++ 标准库中用来表示大小的类型。在 C++ 中,size_t 通常用于数组索引、循环计数、容器大小等。因此,当你在统计字符出现的次数时,使用 size_t 可以提供类型上的匹配,因为字符的数量不可能是负数。
  2. 避免潜在的符号扩展问题:如果使用 int 类型,它是有符号的,可能会在某些情况下导致不必要的符号扩展问题。例如,当 int 被转换为更大的类型时,它的符号位会被扩展,这可能会导致不必要的复杂性。
  3. 更好的性能:在某些平台上,无符号整数类型的操作可能比有符号整数类型的操作更快,因为它们不需要处理符号位。
  4. 更清晰的意图:使用 size_t 类型可以清楚地表明变量是用来表示大小的,这提高了代码的可读性和意图的明确性。
  5. 容器大小兼容性:C++ 标准库中的容器(如 vector、string、unordered_map 等)使用 size_t 来表示它们的大小。因此,使用 size_t 与这些容器的接口保持一致。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务