给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = “abc”, s2 = “bca”
输出: true
// 一个往字典中不断加
// 一个往字典中不断减
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
int len1 = s1.length();
int len2 = s2.length();
if (len1 != len2)
return false;
unordered_map<char, int> dic;
unordered_map<char, int>::iterator it;
for (int i = 0; i < len1; i++) {
dic[s1[i]] += 1;
}
for (int i = 0; i < len2; i++) {
dic[s2[i]] -= 1;
}
for (it = dic.begin(); it != dic.end(); it++) {
if (it.second != 0)
return false;
}
return true;
}
};
unordered_map会通过[]自动创建不存在的键,并使其值为0
所以才会出现 dic[s1[i]]++ 的动作
unordered_set要用insert执行插入动作
哈希表的元素个数:count(),会返回0或1 (表示存在或者不存在)
其他动作:empty()、size()、erase()