标签:ase whether char sort cas space ++ dict nbsp
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.
General idea:
Time complexity is O(n), space complexity is O(n)
class Solution { public: bool isAnagram(string s, string t) { if(s.size() != t.size()){ return false; } unordered_map<char, int> dict; for(string::size_type ix = 0; ix < s.size(); ix++){ dict[s[ix]]++; } for(string::size_type ix = 0; ix < t.size(); ix++){ if(dict.find(t[ix]) != dict.end()){ dict[t[ix]]--; if(dict[t[ix]] == 0){ dict.erase(t[ix]); } } } return dict.empty(); } };
class Solution { public: bool isAnagram(string s, string t) { if(s.size() != t.size()){ return false; } int size = s.size(); vector<int> sv(26, 0), tv(26, 0); for(int i = 0; i < size; i++){ sv[s[i] - ‘a‘]++; tv[t[i] - ‘a‘]++; } return sv == tv; } };
Time complexity is O(nlgn), space complexity is O(1)
class Solution { public: bool isAnagram(string s, string t) { sort(s.begin(), s.end()); sort(t.begin(), t.end()); return s == t; } };
标签:ase whether char sort cas space ++ dict nbsp
原文地址:http://www.cnblogs.com/wdw828/p/7068190.html