[LeetCode] 面试题01.02 判定是否互为字符重拍
题目描述:
给定两个由小写字母组成的字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入:s1
= "abc",s2
= "bca" 输出: true
示例 2:
输入:s1
= "abc",s2
= "bad" 输出: false
说明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
题目链接:
. - 力扣(LeetCode)
解题主要思想:
如果s1和s2互为重排字符,那么s1和s2的长度一定是相等的。然后我们可以借助数组实现一个hash,判断s1的字符及数量是否和s2相同即可。
解题代码:
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if (s1.size() != s2.size()) return false;
int map1[130];
for (auto& c : s1) {
++map1[c];
}
for (auto& c : s2) {
if ( map1[c] > 0) --map1[c];
else return false;
}
return true;
}
};