首页 > 代码库 > [leetcode-242-Valid Anagram]
[leetcode-242-Valid Anagram]
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
思路:
anagram有一个特点就是排序之后,字符串是相等的。
bool isAnagram(string s, string t) { if(s.size()!=t.size())return false; map<string,int>m; sort(s.begin(),s.end()); sort(t.begin(),t.end()); m[s]++; m[t]++; if(m.size()==2)return false; return true; }
还可以用hash
bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int n = s.length(); unordered_map<char, int> counts; for (int i = 0; i < n; i++) { counts[s[i]]++; counts[t[i]]--; } for (auto count : counts) if (count.second) return false; return true; }
bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int n = s.length(); int counts[26] = {0}; for (int i = 0; i < n; i++) { counts[s[i] - ‘a‘]++; counts[t[i] - ‘a‘]--; } for (int i = 0; i < 26; i++) if (counts[i]) return false; return true; }
参考:
https://discuss.leetcode.com/topic/20303/2-c-solutions-with-explanations
[leetcode-242-Valid Anagram]
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。