面试题 01.02. 判定是否互为字符重排
给定两个字符串
s1
和s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
解题报告:
用一个整数数组映射26个字母,数组初始化为零,遍历字符串1,出现字母则计数加1,遍历字符串2,出现字母则计数减1,在遍历整数数组,判断数组的值是否为零。
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
int cmp[26]={0};
for (int i=0;i<s1.size();i++)
cmp[s1[i]-'a']++;
for (int i=0;i<s2.size();i++)
cmp[s2[i]-'a']--;
for (int i=0;i<26;i++)
if (cmp[i]!=0) return false;
return true;
}
};