[哈希散列,字符串處理]7-9 判斷兩個字符串是否為變位詞 (25分)


如果一個字符串是 另一個字符串的重新排列組合,那么這兩個字符串互為變位詞。比如,”heart”與”earth”互為變位 詞,”Mary”與”arMy”也互為變位詞。

輸入格式:

第一行輸入第一個字符串,第二行輸入第二個字符串。

輸出格式:

輸出“yes”,表示是互換詞,輸出“no”,表示不是互換詞。

輸入樣例1:

在這里給出一組輸入。例如:

Mary
arMy

輸出樣例1

在這里給出相應的輸出。例如:

yes

輸入樣例2:

在這里給出一組輸入。例如:

hello 114
114 hello

輸出樣例2:

在這里給出相應的輸出。例如:

yes

輸入樣例3:

在這里給出一組輸入。例如:

Wellcom
mocllew

輸出樣例3:

在這里給出相應的輸出。例如:

no

思路:用散列的思想,把每個字母存進a數組中(每個字母有唯一的Ascll碼值)

        然后用string類的find查找,用兩重for循環也可(可能卡時間)

 

 1 #include<iostream>
 2 #include<string>
 3 #include<cstring>
 4 using namespace std;
 5 int main()
 6 {
 7     string s1, s2;
 8     int a[255], flag = 0;
 9     memset(a, 0, sizeof(a));
10     getline(cin, s1);
11     getline(cin, s2);
12     for (int i = 0; i < s1.length(); i++)
13         a[s1[i]]++;
14     for (int i = 0; i < s2.length(); i++)
15     {
16         if (s1.find(s2[i])!=string::npos)
17             a[s2[i]]--;
18     }
19     for (int i = 0; i <255; i++)
20     {
21         if (a[i]!=0)
22         {
23             flag = 1;
24         }
25     }
26     if (flag)
27     {
28         cout << "no";
29     }
30     else
31         cout << "yes";
32 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM