Valid Anagram – LeetCode 242
Problem
Description
Given two strings s and t, write a function to determine if t is an anagram of s.
 
Example
For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.
Answer
Original
Code
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | class Solution {public:
 bool isAnagram(string s, string t) {
 int cnt[26] = {};
 for(unsigned i = 0; i != s.size(); ++i)
 ++cnt[s[i]-'a'];
 for(unsigned i = 0; i != t.size(); ++i)
 --cnt[t[i]-'a'];
 for(unsigned i = 0; i != 26; ++i)
 if(cnt[i]) return false;
 return true;
 }
 };
 
 | 
思路
使用数组简单存储出现的次数。时间复杂度$O(n)$,空间复杂度$O(n)$。
耗时$9$ ms,排名$33.23\%$
Better
思路
这个方法只是展示一下,使用排序来处理,然后一次遍历查找不对的地方。时间复杂度$O(nlog_{2}{n})$,空间复杂度$O(1)$。
耗时$23$ ms,排名$86.44\%$
Code
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | class Solution {public:
 bool isAnagram(string s, string t) {
 if(s.size() != t.size()) return false;
 sort(s.begin(),s.end());
 sort(t.begin(),t.end());
 for(unsigned i = 0; i != s.size(); ++i)
 if(s[i] != t[i]) return false;
 return true;
 }
 };
 
 |