题目描述
给定两个字符串str1和str2,如果str1和str2中出现的字符种类出现的一样且每种字符出现的次数也一样,那么str1和str2互为变形词。请判断str1和str2是否为变形词
输入描述:
输入包括3行,第一行包含两个整数n,m(1 \leq n,m\leq 10^5)(1≤n,m≤10^5)
分别代表str1和str2的长度,第二行和第三行为两个字符串,分别代表str1和str2。
输出描述
如果str1和str2互为变形词,请输出“true”,否则输出“false”
示例
#include<iostream>
#include<string>
using namespace std;bool judge(string &s1, string &s2){int count[256] = { 0 }; //字符串中每个字符默认初始次数为0次int i;for (i = 0; i < s1.size(); ++i){count[s1[i]]++; //s1取出来的值作为计数数组的下标}for (i = 0; i < s2.size(); ++i)count[s2[i]]--;for (int i = 0; i < 256; i++){if (count[i] != 0){return false;}}return true;
}int main()
{string s1;string s2;long len1;long len2;cin >> len1;cin >> len2;if (len1 != len2){return false;}cin >> s1;cin >> s2;bool ret = judge(s1, s2);if (ret == true){printf("true\n");}else{printf("false\n");}system("pause");return 0;
}