【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.

题意:

  给2个字符串,判断他们是否相等,只是顺序不一样(专业术语叫:变位词)。

思路:

  很简单的一道题,方法有N多种,这里我使用一个大小为26的数组来解决(类似桶排序的思路),时间复杂度:O(n),空间复杂度:常数26。

C++:

 1 class Solution {
 2 public:
 3     bool isAnagram(string s, string t) {
 4         
 5         int len = s.size();
 6         if(len != t.size())
 7             return false;
 8         
 9         int a[26];
10         memset(a, 0, sizeof(a));
11         
12         for(int i = 0; i < len; i++)
13         {
14             a[s[i] - 'a']++;
15             a[t[i] - 'a']--;
16         }
17         
18         for(int i = 0; i < 26; i++)
19             if(a[i] != 0)
20                 return false;
21         
22         return true;
23     }
24 };

 

posted @ 2015-08-02 13:53  tjuloading  阅读(147)  评论(0)    收藏  举报