FOJ Problem 2027 单词问题
程序员文章站
2022-03-13 16:45:23
...
一,问题描述
二,问题分析
1.遍历输入的整个字符串,对每个字符进行判断,判断每个字符是否在字母范文内,并用一个char型数组接收单词
2.判断单词是否唯一,我们可以采用map中find()函数
3.注意是多个输入,输出格式为按顺序输入单词,一个单词一行
三,问题解答
#include<iostream>
#include<map>
#include<string>
#include<cstdio>
using namespace std;
char str[105]; //输入的字符串
char word[105]; //记录一个完整单词
int main() {
int i, len, j;
map<string, int> m;
map<string, int>::iterator it;
while (scanf("%s", str) != EOF) {
len = strlen(str);
j = 0;
for (i = 0; i <= len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z' || str[i] >= 'a' && str[i] <= 'z') {
word[j] = str[i];
++j;
}
//注意此处应该判断单词是否存在,否则出现多个非字母字符时打印多个换行符
else if (j > 0) {
word[j] = '\0'; //将word标记为字符串,不可省
j = 0;
it = m.find(word);
if (it == m.end()) { //判断map容器中是否又这个单词
m.insert(map<string, int>::value_type(word, 1));
printf("%s\n", word);
}
}
}
m.clear();
}
}
上一篇: 牛客练习赛25A题-找规律
下一篇: 在java中方法的三种调用方式