用string写1142:单词的长度别用#include <unordered_map>
时间: 2023-07-19 21:42:51 浏览: 86
好的,这是用 C++ 的 string 类写的 1142 题的代码,不用 `<unordered_map>` 库:
```c++
#include <iostream>
#include <string>
using namespace std;
const int MAXN = 1000; // 单词的最大长度
int cnt[MAXN + 1]; // 记录不同长度单词的出现次数
int main() {
string str;
getline(cin, str); // 输入字符串
int i = 0;
while (i < str.length()) {
int len = 0;
while (i < str.length() && str[i] != ' ') {
len++;
i++;
}
if (len != 0) {
cnt[len]++;
}
i++;
}
for (int i = 1; i <= MAXN; i++) {
if (cnt[i] != 0) {
cout << i << ": " << cnt[i] << endl;
}
}
return 0;
}
```
这个程序和之前的程序类似,不同之处在于使用一个数组来记录不同长度单词的出现次数,而不是使用 `unordered_map`。我们假设单词的最大长度为 `MAXN`,则可以定义一个长度为 `MAXN+1` 的数组 `cnt`,`cnt[i]` 表示长度为 `i` 的单词出现的次数。在读取单词时,如果单词的长度为 `len`,则将 `cnt[len]++`。最后遍历数组,输出不同长度的出现次数。
阅读全文