这道题水到离谱,方法一将他们排序后观察是否相等即可。
class Solution {
public boolean CheckPermutation(String s1, String s2) {
if (s1.length() != s2.length()) {
return false;
}
char[] str1 = s1.toCharArray();
char[] str2 = s2.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
}
为了减少时间复杂度,可以使用哈希表判断。
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if (s1.length() != s2.length()) {
return false;
}
vector<int> table(26, 0);
for (auto& ch: s1) {
table[ch - 'a']++;
}
for (auto& ch: s2) {
table[ch - 'a']--;
if (table[ch - 'a'] < 0) {
return false;
}
}
return true;
}
};