21xrx.com
2025-03-30 08:08:57 Sunday
文章检索 我的文章 写文章
C++ 统计字符串中数字出现的频率
2023-07-04 15:00:39 深夜i     18     0
C++ 字符串 数字 频率 统计

在C++编程中,经常需要对字符串进行分析和处理,其中一个常见的需求就是统计字符串中数字出现的频率。本文将介绍一种简单而高效的实现方法。

首先,我们需要采用C++中标准库中的string类型来表示待处理的字符串。假设我们的字符串为str,我们可以定义如下:

std::string str = "Ab12c3d4Ef5678G";

接下来,我们需要定义一个用于记录出现频率的字典,使用map数据结构可以很方便地实现。map是C++ STL中的一个关联容器,它将键值映射到值上。我们可以定义一个键为char类型,值为int类型的map,如下:

std::map<char, int> freq;

接下来,我们遍历字符串中的每一个字符。如果字符是数字,则我们将其与freq字典中对应的值进行加一操作。如果字符不是数字,则不进行任何操作。具体实现如下:

for (int i = 0; i < str.length(); i++) {
  char c = str[i];
  if (c >= '0' && c <= '9') {
    freq[c] += 1;
  }
}

最后,我们遍历freq字典,输出每个数字以及其出现的频率。具体实现如下:

for (auto kv : freq)
  std::cout << "Digit " << kv.first << " appears " << kv.second << " times." << std::endl;

完整代码如下:

#include <iostream>
#include <string>
#include <map>
int main() {
  std::string str = "Ab12c3d4Ef5678G";
  std::map<char, int> freq;
  for (int i = 0; i < str.length(); i++) {
    char c = str[i];
    if (c >= '0' && c <= '9') {
      freq[c] += 1;
    }
  }
  for (auto kv : freq)
    std::cout << "Digit " << kv.first << " appears " << kv.second << " times." << std::endl;
  
  return 0;
}

执行该程序,输出结果如下:

Digit 1 appears 1 times.
Digit 2 appears 1 times.
Digit 3 appears 1 times.
Digit 4 appears 1 times.
Digit 5 appears 1 times.
Digit 6 appears 1 times.
Digit 7 appears 1 times.
Digit 8 appears 1 times.

可以看到,我们成功地统计了字符串中数字的出现频率,且代码易懂,简洁高效。

  
  

评论区