題目17. 英文斷詞
問題描述 :
斷詞在自然語言的研究上是個很重要的步驟,主要就是將關鍵字從句子中斷出,英文的斷詞較為簡單,就根據句子中的空格將英文字隔開。
輸入說明 :
輸入一句英文敘述句。 字元數≤1000。
輸出說明 :
將輸入的句子進行斷詞,將斷出的關鍵字依照句子中的出現排序列印出。全部轉成小寫,列印出的關鍵字不得重複,關鍵字間以一個空格隔開,最後一個關鍵字後面進行換行。例如輸入 How do you do ,則輸出 how do you 。
範例 :
斷詞在自然語言的研究上是個很重要的步驟,主要就是將關鍵字從句子中斷出,英文的斷詞較為簡單,就根據句子中的空格將英文字隔開。
輸入說明 :
輸入一句英文敘述句。 字元數≤1000。
輸出說明 :
將輸入的句子進行斷詞,將斷出的關鍵字依照句子中的出現排序列印出。全部轉成小寫,列印出的關鍵字不得重複,關鍵字間以一個空格隔開,最後一個關鍵字後面進行換行。例如輸入 How do you do ,則輸出 how do you 。
範例 :
輸入範例 | 輸出範例 |
How do you do | how do you |
- #include <iostream>
- #include <string>
- #include <sstream>
- #include <stdio.h>
- #include <ctype.h>
- using namespace std;
- int main() {
- // 題目17. 英文斷詞
- string text;
- getline(cin, text);//使用者輸入
- //全轉小寫
- for(int i = 0;i < text.size();i++)
- {
- text[i] = (char)tolower(text[i]);
- }
- string tok[1000];//切割後的字串
- string fin[1000];//沒有重複的才放入fin[]
- int count = 0;
- bool exist = true;
- fill(tok, tok+1000, "");
- fill(fin, fin+1000, "");
- stringstream ss(text);
- string token;
- //字串切割
- while (getline(ss, token, ' '))
- {
- tok[count] = token;
- count++;
- }
- int fpos = 0;
- //比對
- for (int i = 0; i < count; i++)
- {
- //tok[], fin[]
- //尋找tok[]如果沒有存在在fin中[]就存入fin[]
- for(int j = 0;j < count;j++)
- {
- if(tok[i] == fin[j])//如果存在在fin就false
- {
- exist = false;
- }
- }
- if(exist == true)//不存在在fin就放入fin
- {
- fin[fpos] = tok[i];
- fpos++;
- }
- exist = true;
- }
- //輸出
- for (int i = 0; i < fpos; i++)
- {
- if(i == fpos-1)
- {
- cout << fin[i] << endl;
- }
- else
- {
- cout << fin[i] << " ";
- }
- }
- return 0;
- }
沒有留言:
張貼留言