欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FOJ Problem 2027 单词问题

程序员文章站 2022-03-13 16:45:23
...

一,问题描述

FOJ Problem 2027 单词问题

二,问题分析

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();
	}
}

 

相关标签: FOJ