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