21xrx.com
2024-12-27 21:31:47 Friday
登录
文章检索 我的文章 写文章
C++中不同单词个数的统计
2023-06-23 06:13:52 深夜i     --     --
C++ 单词个数 统计 不同 编程

C++是一种高级编程语言,可以用于开发各种类型的程序。在编写一个程序时,常常需要对输入的文本进行处理。其中一个常见的需求是计算文本中不同单词的个数。

在C++中,可以使用字符串(string)和vector等数据结构进行单词个数的统计。下面介绍两种不同的方法。

方法一:使用字符串和哈希表

使用字符串存储输入的文本,然后使用哈希表统计不同单词的个数。哈希表可以用C++标准库中的unordered_map实现。具体实现过程如下:

1.定义一个unordered_map 类型的变量,用于存储不同单词和它们出现的次数。

2.使用std::getline()从标准输入流中读取一行文本。

3.使用std::istringstream将这行文本转换成一个字符串流。

4.使用while循环从字符串流中读取一个单词,然后将它加入到哈希表中。

5.输出哈希表中不同单词的个数。

下面是示例代码:


#include <iostream>

#include <unordered_map>

#include <sstream>

using namespace std;

int main() {

  unordered_map<string, int> m; // 定义哈希表

  string line;

  getline(cin, line); // 从标准输入流中读取一行

  istringstream iss(line); // 将这行文本转换成字符串流

  string word;

  while (iss >> word) { // 循环读取单词

    m[word]++;

  }

  cout << m.size() << endl; // 输出不同单词的个数

  return 0;

}

方法二:使用vector和排序算法

使用vector存储输入的文本,然后使用排序算法(如std::sort)和unique函数统计不同单词的个数。具体实现过程如下:

1.定义一个vector 类型的变量,用于存储输入的文本。

2.使用std::getline()从标准输入流中读取一行文本。

3.使用std::istringstream将这行文本转换成一个字符串流。

4.使用while循环从字符串流中读取一个单词,然后将它加入到vector中。

5.使用std::sort对vector进行排序。

6.使用std::unique去除vector中的重复元素,并输出不同单词的个数。

下面是示例代码:


#include <iostream>

#include <vector>

#include <algorithm>

#include <sstream>

using namespace std;

int main() {

  vector<string> vec;

  string line;

  getline(cin, line);

  istringstream iss(line);

  string word;

  while (iss >> word) {

    vec.push_back(word);

  }

  sort(vec.begin(), vec.end());

  auto it = unique(vec.begin(), vec.end());

  cout << distance(vec.begin(), it) << endl;

  return 0;

}

综上所述,C++中可以使用不同的数据结构和算法实现单词个数的统计。具体选择哪种方法取决于程序的需求以及输入文本的大小。

  
  

评论区

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