题意:

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

思路:

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

第一种方法:

 class Solution {
public:
bool isAnagram(string s,string t)
{
if(s.size()!=t.size()) return false;
int cnt[][]={};
for(int i=; i<s.size(); i++)
cnt[s[i]-'a'][]++;
for(int i=; i<t.size(); i++)
cnt[t[i]-'a'][]++;
for(int i=; i<; i++)
if(cnt[i][]^cnt[i][])
return false;
return true;
}
};

AC代码

 class Solution {
public:
bool isAnagram(string s,string t)
{
if(s.size()!=t.size()) return false;
int cnt[]={};
for(int i=; i<s.size(); i++) cnt[s[i]-'a']++,cnt[t[i]-'a']--;
for(int i=; i<; i++) if(cnt[i]) return false;
return true;
}
};

AC代码

第二种方法:

 class Solution {
public:
bool isAnagram(string s,string t)
{
if(s.size()!=t.size()) return false;
sort(s.begin(),s.end());
sort(t.begin(),t.end());
for(int i=; i<s.size(); i++)
if(s[i]^t[i]) return false;
return true;
}
};

AC代码

 bool isAnagram(string s,string t)
{
sort(s.begin(),s.end());
sort(t.begin(),t.end());
return s==t;
}

AC代码

python3

 class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
::rtype: bool
"""
listt=list(t)
for x in s:
try:
listt.remove(x)
except ValueError:
return False
return True if listt==[] else False

AC代码

 class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
::rtype: bool
"""
dic1, dic2= {}, {}
for x in s:
dic1[x]=dic1.get(x,0)+1
for x in t:
dic2[x]=dic2.get(x,0)+1
return dic1==dic2

AC代码

 class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
::rtype: bool
"""
cnt1, cnt2= [0]*26, [0]*26
for x in s:
cnt1[ord(x)-ord('a')]+=1
for x in t:
cnt2[ord(x)-ord('a')]+=1
return cnt1==cnt2

AC代码

 class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
::rtype: bool
"""
return sorted(s)==sorted(t)

AC代码

最新文章

  1. C# ADO.NET 连接Sybase 数据库
  2. 流量咪教你挖到5G免费流量
  3. Android 常见Crash Log汇总
  4. RMAN_学习笔记2_RMAN Setup配置和监控
  5. Jquery+artTemplate+layPage 封装datagrid
  6. TestLink学习七:TestLink测试用例Excel转换XML工具
  7. Qt Painter放大时,event处理应该注意的要点
  8. SilkTest Q&amp;A 3
  9. MFC之窗体改动工具栏编程状态栏编程程序启动画面
  10. 在vs2013下手把手创建/调用dll
  11. UVA1627-Team them up!(动态规划)
  12. CountDownLatch(三)
  13. 12.k8s的存储卷创建过程
  14. Spring AOP 详解[转]
  15. springboot Thymeleaf 整合
  16. 微信小程序 - 分包加载(分包使用)
  17. [UE4]添加机器人
  18. GPT磁盘win7激活工具
  19. mac os版本Intellij IDEA 搭建spring mvc的maven工程(新手教学)
  20. sdut 2159:Ivan comes again!(第一届山东省省赛原题,STL之set使用)

热门文章

  1. hdu1077
  2. CocoaPods常用操作命令
  3. Sharepoint商务智能学习笔记之Powerpivot Service Dmeo(八)
  4. enter键触发事件的清除
  5. js对象转换为json字符串
  6. java排序算法(持续更新)
  7. 在mac上使用sublime text3搭建opencv3开发环境
  8. html标签的补充—— b,strong标签
  9. 我选择了学Python
  10. rest get post 请求工具_restclient.jar