题目描述:
给定两个由小写字母组成的字符串 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;}
};