LeetCode 242. Valid Anagram

[26]位数组,存储对应字母出现的个数,s、t分别得到不同数组,比较两个数组是否相同。

 1 class Solution {
 2 public:
 3     bool isAnagram(string s, string t) {
 4         if(s.length() != t.length()) return false;
 5         int s_data[26] = {}, t_data[26] = {0};
 6         for(int i = 0; i < s.length(); ++i){
 7             s_data[s[i] - '0' - 49] += 1;
 8             t_data[t[i] - '0' - 49] += 1;
 9         }
10         for(int i = 0; i < 26; ++i){
11             if(s_data[i] != t_data[i]) return false;
12         }
13         return true;      
14     }
15 };

 

python一行写法(调用库函数):

1 class Solution(object): 
2     def isAnagram(self, s, t): 
3         return sorted(s) == sorted(t)    

 

c++ 相同思路 不同写法:

 1 class Solution {
 2 public:
 3     bool isAnagram(string s, string t) {
 4         if(s.size() != t.size())    return false;
 5         int n=s.size();
 6         vector<int> counts(128, 0);
 7         for(int i=0; i<n; i++)
 8         {
 9             counts[s[i]]++;
10             counts[t[i]]--;
11         }
12         for(auto count:counts)
13             if(count)   return false;
14         return true;
15     }
16 };

 

posted @ 2016-03-05 21:34  co0oder  阅读(149)  评论(0编辑  收藏  举报