[C_ST108-易] 重組字
Time Limit: 2 seconds
問題描述 :
所謂「重組字」是將單字或片語中的字母重新排列組合而造出來的單字或片語。其中的空白可以忽略,字母的大小寫不考慮,且每個字母出現的次數必須一樣,例如, Dormitory 的重組字可以是 Dirty Room 。
輸入說明 :
每個輸入有 5 筆測資,每筆測資一行,每一行包含 2 個單字或片語,中間以破折號 「 - 」 為區隔。
輸出說明 :
輸出每一筆測資是否為 重組字,正確輸出 true ,錯誤輸出 false 。
範例 :
問題描述 :
所謂「重組字」是將單字或片語中的字母重新排列組合而造出來的單字或片語。其中的空白可以忽略,字母的大小寫不考慮,且每個字母出現的次數必須一樣,例如, Dormitory 的重組字可以是 Dirty Room 。
輸入說明 :
每個輸入有 5 筆測資,每筆測資一行,每一行包含 2 個單字或片語,中間以破折號 「 - 」 為區隔。
輸出說明 :
輸出每一筆測資是否為 重組字,正確輸出 true ,錯誤輸出 false 。
範例 :
輸入範例 | 輸出範例 |
Dormitory - Dirty room keep - peek silent - listen Toss - Shot Joy - enjoy | true true true false false |
- #include <iostream>
- #include <string>
- #include <sstream>
- #include <stdio.h>
- #include <ctype.h>
- using namespace std;
- int main() {
- // [C_ST108-易] 重組字
- string test;
- while(getline(cin, test))
- {
- string s1, s2;
- stringstream ss(test);
- string token;
- int c = 0;
- //字串切割
- while (getline(ss, token, '-'))
- {
- if(c == 0)
- {
- s1 = token;
- c++;
- }
- else
- {
- s2 = token;
- }
- }
- int count1[26];
- int count2[26];
- for(int i = 0;i < 26;i++)
- {
- count1[i] = 0;
- count2[i] = 0;
- }
- for(int i = 0;i < s1.size();i++)
- {
- if(s1[i] != ' ')
- count1[(char)tolower(s1[i])-97]++;
- }
- for(int i = 0;i < s2.size();i++)
- {
- if(s2[i] != ' ')
- count2[(char)tolower(s2[i])-97]++;
- }
- bool equal = true;
- for(int i = 0;i < 26;i++)
- {
- if(count1[i] != count2[i])
- equal = false;
- }
- if(equal)
- cout << "true" << endl;
- else
- cout << "false" << endl;
- }
- return 0;
- }
沒有留言:
張貼留言