leetcode-242有效字母异位词
题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
解决的方法有好多种,最容易想到的可以直接转换成字符数组,然后两个都排序挨个比较,排序可以选快排,这种思路,时间复杂度nlogn。
第二种思路是使用定长的数组作为hash表。
一个重要的前提“假设两个字符串只包含小写字母”,小写字母一共也就 26 个,因此:
可以利用一个长度为 26 的字符数组(初始化为0)来统计每个字符串中小写字母出现的次数,然后再对比是否相等;
将出现在字符串 s 里的字符个数加 1,而出现在字符串 t 里的字符个数减 1,最后判断字符数组中是否都为 0。如果不为0返回false,否则返回true。
按上述操作,可得出结论:s 和 t 互为字母异位词。
记得首先判断s和t的长度是否相等,如果不等。可以直接返回false,就免得去执行下面的操作。
第二种思路时间复杂度是O(n),空间复杂度是O(1)。
代码
class Solution {
public:
bool isAnagram(string s, string t) {
int num[26]={0};
if(s.length()!=t.length()){
return false;
}
for(int i=0; i<s.length();i++){
num[s[i]-'a']++;
num[t[i]-'a']--;
}
for(int i=0; i<26;i++){
if(num[i]!=0){
return false;
}
}
return true;
}
};
leetcode-242有效字母异位词的更多相关文章
- leetcode 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...
- Leetcode题目49.字母异位词分组(中等)
题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "t ...
- 【LeetCode】49. 字母异位词分组
49. 字母异位词分组 知识点:字符串:哈希表 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源 ...
- leetcode -有效的字母异位词 python&C++
C++解题代码: class Solutiion { public: bool isAnagram(string s, string t) { ](); int n = s.length(); int ...
- 前端与算法 leetcode 242. 有效的字母异位词
目录 # 前端与算法 leetcode 242. 有效的字母异位词 题目描述 概要 提示 解析 解法一:哈希表 解法二:数组判断字符出现次数 解法三:转换字符串 算法 传入测试用例的运行结果 执行结果 ...
- LeetCode 242. 有效的字母异位词(Valid Anagram)
242. 有效的字母异位词 LeetCode242. Valid Anagram 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s ...
- Java实现 LeetCode 242 有效的字母异位词
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = " ...
- 【LeetCode】242. 有效的字母异位词
242. 有效的字母异位词 知识点:字符串:哈希表 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 ...
- Leetcode 242.有效的字母异位词 By Python
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...
- [LeetCode] 242. 有效的字母异位词 valid-anagram(排序)
注意这里字母异位词的定义是:字母类别及个数都要一样,只是排列顺序不同. class Solution(object): def isAnagram(self, s, t): ""& ...
随机推荐
- Panda 交易所视点观察!区块链金融应用迎新规,哪些版块受影响?
Panda交易所获悉,近日央行下发推动<区块链技术规范应用的通知>(以下简称"通知")及<区块链技术金融应用评估规则>(以下简称"规则" ...
- AcWing 407. 稳定的牛分配
大型补档计划 题目链接 题目看的有点晕(语文差) 总体来说就是让每头牛找个谷仓,不能超过容量,最小化每头牛在的谷仓在自己心目中排名的极差. 显然这个最优性问题不好做,但是转换为判定性问题这就是一个标准 ...
- MySQL事务(二)事务隔离的实现原理:一致性读
今天我们来学习一下MySQL的事务隔离是如何实现的.如果你对事务以及事务隔离级别还不太了解的话,这里左转. 好的,下面正式进入主题.事务隔离级别有4种:读未提交.读提交.可重复读和串行化.首先我们来说 ...
- Python Windows开发环境搭建
一.下载python安装包 python官网地址:https://www.python.org/,下载windows平台包并安装 二.在Windows设置环境变量 计算机右键,选择属性,在高级系统设置 ...
- sqli-labs less8-10(布尔盲注时间盲注)
less-8 布尔盲注 首先利用?id=1' and 1=1 --+和?id=1' and 1=2 --+确定id的类型为单引号''包裹.然后进行盲注. 盲注思路: 破解当前数据库名: and len ...
- 【MySQL】Novicat 连接mysql 报错1251的问题处理,Novicat12 破解方法
1.远程连接时,报错 是因为我们的navicat版本太低 在网上查的是,出现这个原因是mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是ca ...
- rman恢复实践
1) Loss of system DATAFILE 2) Loss of non-system DATAFILE 3) Loss of a DATAFILE without Backup 4) Lo ...
- Java读取系统默认时区
工作中,遇到一个Java读取默认时区的问题,后来看了openjdk的源码,大致整理一下过程 public class Test { public void test(){ TimeZone.getDe ...
- 深入LUA脚本语言,让你彻底明白调试原理
这是道哥的第008篇原创 一.前言 上篇文章我们聊了gdb的底层调试机制,明白了gdb是利用操作系统提供的系统信号来调试目标程序的.很多朋友私下留言了,看到能帮助到大家,我心里还是很开心的,其实这也是 ...
- uwsgi 的app变量名称必须为application
from myproject import app as application if __name__ == "__main__": application.run() 否则会提 ...