大家好,我是小黄呀
题目大意
给定两个字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
思路分析
- sort排序后比较:直接对两个字符串进行字符排序,用到
sort
函数,然后对排序后的结果进行比较,若相同则为true
,否则为fals
e。 - 数组下标转换法:利用字符对应数组下标进行转换,定义一个大小为
128
的数组,将字符串s1
和s2
中的每个字符都分别进行转换,字符串s1
中出现某字符,则对应数组下标值+1
,字符串s2
中出现某字符,则对应数组下标值-1
,然后对整个数组进行遍历,若存在某数组下标对于值不为0
,则说明结果为false
,反之,为true
。
具体代码
//sort排序后比较
class Solution{
public:
bool CheckPermutation(string s1, string s2){
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
return s1==s2;
}
};
//数组转换法
class Solution{
public:
bool CheckPermutation(string s1, string s2){
int len1=s1.size();
int len2=s2.size();
if(len1!=len2)
return false;
int len[128]={0};
for(int i=0;i<len1;i++)
{
len[s1[i]]++;
len[s2[i]]--;
}
for(int i=0;i<128;i++)
if(len[i]!=0)
return false;
return true;
}
};