Luoyoooo

与其感慨路难行,不如马上出发

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

 

posted @ 2020-02-04 21:53  Luoyoooo  阅读(907)  评论(0编辑  收藏  举报