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