21xrx.com
2024-09-20 05:50:21 Friday
登录
文章检索 我的文章 写文章
C++ 统计字符串中数字出现的频率
2023-07-04 15:00:39 深夜i     --     --
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.

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复