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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章