2018.1.30【 UVA - 10815 】解題報告(STL,set容器,string類)

原題目地址:點擊打開鏈接

【題目大意】

給定一個文章段落,要求按字典序輸出出現的所有單詞(不重複)

【解題思路】

要求不重複且按照字典序排序,想到利用STL中的set容器,那麼怎麼在set裏存儲字符串呢?

蒐集了多種方法,最後發現還是利用C++string類來的方便,不過這就帶來一個問題。printf,scanf只支持內置類型,對string類型不支持的。這時候不得以都要換上cin,cout。

另外還需要使用到stringstream,從新建立字符串流。首先將raw輸入中把非字母的變爲' ',大小寫轉換一下再逐行輸入到stingstream中,然後再從流中全部輸出到set容器裏。遍歷一遍set輸出即可。

【解題代碼】

先附上自己的代碼

#include <iostream>
#include <string>
#include <sstream>
#include <set>
using namespace std;
//初認識set 以及 stringstream 
set<string> dic;
int main()
{
	string s, a;
	while (getline(cin, s))
	{
		for (int i = 0; i < s.length(); i++)
		{
			if (isalpha(s[i]))
				s[i] = tolower(s[i]);
			else s[i] = ' ';
		}
		stringstream stringin(s);
		while (stringin >> a)
		{
			dic.insert(a);
		}
		/*set<string>::iterator point;
		for (point = dic.begin(); point != dic.end(); point++)
			cout << *point << endl;*/
	}
		set<string>::iterator point;
		for (point = dic.begin(); point != dic.end(); point++)
			cout << *point << endl;
	
	return 0;
}
附上本題學習的bloc:點擊打開鏈接

【收穫與反思】

在思路里寫的差不多了。

1.set容器的使用。

2.string類的認識,需要用cin,cout輸入輸出。以及要用到std::string::length方法來獲取長度,不能再用c中的strlen。

3.迭代器的第一次使用。

發佈了40 篇原創文章 · 獲贊 1 · 訪問量 6254
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章