[哈希散列,字符串处理]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