10815 Andy’s First Dictionary

題目原文

題目說明
輸入一段文章,輸出每一單字,並按字典序排列。

思路
一個單字一個單字去讀,若遇到像 andy's 這種詞,須將其切割為 andy 和 s 兩個單字,
讀完丟入 set (會自動依字典序排列),再利用迭代器輸出即可。

#include<iostream>
#include<cctype> 
#include<cstring>
#include<sstream>
#include<set>
using namespace std;

set<string> dict;

int main()
{ 
 string input;
 
 while(cin >> input)
 {  
  for(int i = 0; i < input.length(); i++)
  {
   if(isalpha(input[i]))
    input[i] = tolower(input[i]);
   else
    input[i] = ' ';     // 非字母轉成空白字元 (ex. andy's 變 andy s)  
  }
  
  stringstream ss;      // 拿來切割 (ex. andy s 變兩個字串) 
  ss << input;
  string output;
  while(ss >> output)
   dict.insert(output);    // 會自動由小到大排 
   
 }
 set<string>::iterator it;
 for(it = dict.begin(); it != dict.end(); it++)
  cout << *it << endl;   
 
 return 0;
}

留言

這個網誌中的熱門文章

離散數學筆記 — vertex cut

機率筆記 (1)

機率筆記 (4) — 隨機變數