首页 > 其他 > 详细

LeetCode Valid Anagram (简单题)

时间:2015-10-28 22:33:22      阅读:299      评论:0      收藏:0      [点我收藏+]

 

 

题意:

  给出两个字符串s和t,判断串t是否为s打乱后的串。

 

 

思路:

  如果返回的是true,则两个串的长度必定相等,所有字符出现的次数一样。那么可以统计26个字母的次数来解决,复杂度O(n)。也可以排序后逐个比对,复杂度O(nlogn)。

 

 

 

 

第一种方法:

技术分享
 1 class Solution {
 2 public:
 3     bool isAnagram(string s,string t)
 4     {
 5         if(s.size()!=t.size())    return false;
 6         int cnt[26][2]={0};
 7         for(int i=0; i<s.size(); i++)
 8             cnt[s[i]-a][0]++;
 9         for(int i=0; i<t.size(); i++)
10             cnt[t[i]-a][1]++;
11         for(int i=0; i<26; i++)
12             if(cnt[i][0]^cnt[i][1])
13                 return false;
14         return true;
15     }
16 };
AC代码

 

技术分享
 1 class Solution {
 2 public:
 3     bool isAnagram(string s,string t)
 4     {
 5         if(s.size()!=t.size())    return false;
 6         int cnt[26]={0};
 7         for(int i=0; i<s.size(); i++)    cnt[s[i]-a]++,cnt[t[i]-a]--;
 8         for(int i=0; i<26; i++)    if(cnt[i])    return false;
 9         return true;
10     }
11 };
AC代码

 

 

 

第二种方法:

技术分享
 1 class Solution {
 2 public:
 3     bool isAnagram(string s,string t)
 4     {
 5         if(s.size()!=t.size())    return false;
 6         sort(s.begin(),s.end());
 7         sort(t.begin(),t.end());
 8         for(int i=0; i<s.size(); i++)
 9             if(s[i]^t[i])    return false;
10         return true;
11     }
12 };
AC代码

 

技术分享
1 bool isAnagram(string s,string t)
2 {
3     sort(s.begin(),s.end());
4     sort(t.begin(),t.end());    
5     return s==t;
6 }
AC代码

 

LeetCode Valid Anagram (简单题)

原文:http://www.cnblogs.com/xcw0754/p/4918769.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!