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