原题网址: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
原文地址:https://www.cnblogs.com/Tang-tangt/p/9190485.html
时间: 2024-10-14 12:58:55