本文主要是介绍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.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
解答
Anagram:n. 相同字母异序词,易位构词,变位词
My AC code
class Solution {//unordered_map<char,int>hash or int array[256]
public:bool isAnagram(string s, string t) {int m1[256]={-1},m2[256]={-1};if(s.length()!=t.length()) return false;for(int i=0;i<s.length();i++){m1[s[i]]++;m2[t[i]]++;}for(int i=0;i<256;i++)if(m1[i]!=m2[i])return false;return true;}
};
Discuss AC code
hash method
class Solution {
public: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;}
};
the improvement of my method
class Solution {
public: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;}
};
Another method
sorting
class Solution {
public:bool isAnagram(string s, string t) { sort(s.begin(), s.end());sort(t.begin(), t.end());return s == t; }
};
这篇关于Leetcode——242. Valid Anagram的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!