1、题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
2、示例
输入: s = "anagram", t = "nagaram"
输出: true
3、题解
解法一:
基本思想:排序
解法二:
基本思想:哈希表
#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
using namespace std;
class Solution {
public:
bool isAnagram(string s, string t) {
//基本思想:排序
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s == t;
}
};
class Solution1 {
public:
bool isAnagram(string s, string t) {
//基本思想:哈希表
unordered_map<char,int> s1, t1;
for (auto v : s)
++s1[v];
for (auto v : t)
++t1[v];
return s1 == t1;
}
};
int main()
{
Solution1 solute;
string s = "anagram", t = "nagaram";
cout << solute.isAnagram(s, t) << endl;
return 0;
}