211 字符串置换
Posted tang-tangt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了211 字符串置换相关的知识,希望对你有一定的参考价值。
原题网址:https://www.lintcode.com/problem/string-permutation/description
描述
给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
您在真实的面试中是否遇到过这个题?
样例
"abc"
为 "cba"
的置换。
"aabc"
不是 "abcc"
的置换。
标签
排列
字符串处理
思路:只要判断两个字符串中相同字符数量是否一致就好,需要两个哈希表统计各自的字符及数量,然后对比。
AC代码:
class Solution {
public:
/**
* @param A: a string
* @param B: a string
* @return: a boolean
*/
bool Permutation(string &A, string &B) {
// write your code here
int sizeA=A.size();
int sizeB=B.size();
if (sizeA!=sizeB)
{
return false;
}
map<char,int> m1;
map<char,int> m2;
for (int i=0;i<sizeA;i++)
{
if (m1.find(A[i])!=m1.end())//统计字符数量;
{
m1[A[i]]++;
}
else
{
m1[A[i]]=1;
}
if (m2.find(B[i])!=m2.end())//统计字符数量;
{
m2[B[i]]++;
}
else
{
m2[B[i]]=1;
}
}
for (int i=0;i<sizeA;i++)
{
if (m1[A[i]]!=m2[A[i]])
{
return false;
}
}
return true;
}
};
还可以对两个字符串排序,然后比较排序后的字符串是否相等。参考:https://blog.csdn.net/qiujiahao123/article/details/77714776
以上是关于211 字符串置换的主要内容,如果未能解决你的问题,请参考以下文章