Category | Difficulty | Likes | Dislikes |
---|
algorithms | Easy (65.23%) | 565 | - |
Tags
hash-table
| sort
Companies
amazon
| uber
| yelp
给定两个字符串 *s*
和 *t*
,编写一个函数来判断 *t*
是否是 *s*
的字母异位词。
**注意:**若 *s*
和 *t*
中每个字符出现的次数都相同,则称 *s*
和 *t*
互为字母异位词。
示例 1:
1
2
| 输入: s = "anagram", t = "nagaram"
输出: true
|
示例 2:
1
2
| 输入: s = "rat", t = "car"
输出: false
|
提示:
1 <= s.length, t.length <= 5 * 104
s
和 t
仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
Discussion | Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| class Solution {
public:
/**
* ## 解题思路
* 1. 使用map来统计char 数;
* 2. 遍历时,s中的字符count+1,t中的字符count-1;
* 3. 最后判断map中所有count是否都为0;
*/
bool isAnagram(string s, string t) {
if (s.length()!=t.length()) {
return false;
}
map<char, int> m;
for(int i=0; i<s.length(); i++) {
m[s[i]]++;
m[t[i]]--;
}
for(auto a: m) {
if (a.second != 0) {
return false;
}
}
return true;
}
};
|