LeetCode每日一题——953. 验证外星语词典
文章目录
- 题目
- 示例
- 思路
- 代码
题目
某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。
给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。
示例
示例 1:
输入:words = [“hello”,“leetcode”], order = “hlabcdefgijkmnopqrstuvwxyz”
输出:true
解释:在该语言的字母表中,‘h’ 位于 ‘l’ 之前,所以单词序列是按字典序排列的。
示例 2:
输入:words = [“word”,“world”,“row”], order =
“worldabcefghijkmnpqstuvxyz”
输出:false
解释:在该语言的字母表中,‘d’ 位于 ‘l’ 之后,那么
words[0] > words[1],因此单词序列不是按字典序排列的。
示例 3:
输入:words = [“apple”,“app”], order = “abcdefghijklmnopqrstuvwxyz”
输出:false
解释:当前三个字符 “app” 匹配时,第二个字符串相对短一些,然后根据词典编纂规则 “apple” > “app”,因为
‘l’ > ‘∅’,其中 ‘∅’ 是空白字符,定义为比任何其他字符都小(更多信息)。
提示:
1 <= words.length <= 100
1 <= words[i].length <= 20
order.length == 26
在 words[i] 和 order 中的所有字符都是英文小写字母。
思路
字符串匹配问题,我的思路是先将给定词典规则放入哈希表中准备,然后遍历所有给定数组中的字符串,将每个字符串与后面一个字符串逐个字符比较,判断是否符合哈希表中的规则。
具体比较细节:
- 比较是按照两者字符串长度较短的长度进行的,不然会下标溢出
- 比较有四种情况
①前面字符串的字符小于后面字符串,说明前面字符串符合规则,到下一字符串比较
②前面字符串的字符大于后面字符串,说明前面的字符串不符合规则,直接返回False
③前面字符串的字符等于后面字符串,继续向下比较
④前面字符串的长度大于后面字符串的情况,该情况如果前面比较未返回False说明该字符串前n个字符等于后面只有n个字符的字符串,即出现["apple","app"]
这种情况,我们需要另外考虑这种情况,判断比较的长度n是否等于前方字符串的长度,并且判断前方字符串的前n个字符是否都和后方字符串的字符相等
代码
def isAlienSorted(words: List[str], order: str) -> bool:# 哈希表记录规则res = {}for i in range(len(order)):res[order[i]] = ifor i in range(len(words) - 1):# 判断前方字符串的前n个字符是否都等于后方字符串的字符judge = 0n = min(len(words[i]), len(words[i+1]))for j in range(n):# 情况①if res.get(words[i][j]) < res.get(words[i+1][j]):# 修改判断,此种情况符合规则judge = 1break# 情况②elif res.get(words[i][j]) > res.get(words[i+1][j]):return False# 情况③else:continue# 情况④,只有前方字符串长于后方字符串以及二者前n个字符都相等的情况返回Falseif n != len(words[i]) and judge == 0:return Falsereturn True
LeetCode每日一题——953. 验证外星语词典相关推荐
- LeetCode 812. 最大三角形面积(再次用到凸包的Andrew算法) / 面试题 04.06. 后继者 / 953. 验证外星语词典
812. 最大三角形面积 2022.5.15 每日一题 题目描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0, ...
- 953. 验证外星语词典( 简单模拟 + 自定义定制排序 )
文章目录 Question Ideas 1.Answer( Java ) - 自定义定制排序 Code 2.Answer( Java ) - 简单模拟 Code Question 953. 验证外星语 ...
- 题目:953.验证外星语词典
题目来源: leetcode题目,网址:953. 验证外星语词典 - 力扣(LeetCode) 解题思路: 遍历字符串,以连续两个为一组判断其是否符合外星语词典的字典序. 可以使用 int 数组 ...
- 力扣953. 验证外星语词典
力扣953. 验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 ...
- 953. 验证外星语词典
力扣打卡:953. 验证外星语词典 解题思路 思路 使用HashMap统计字典的顺序 从头开始,每次只比较两个字符串 循环比较,最后得到结果 解释 每次比较两个字符串,只有两种情况 从头开始比较字符 ...
- LeetCode 953. 验证外星语词典
验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order (order.length==26)(order.length == 26)(order.length==26)不同.字母表的顺序 ...
- leetcode 953. 验证外星语词典 做题笔记
题目: 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定 ...
- leetcode 953.验证外星语词典(js)
题目 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的 ...
- LeetCode简单题之验证外星语词典
题目 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的 ...
最新文章
- OKR案例分析,哪种类型的企业适合OKR?
- 【腾讯代码文化】人均3.6万行代码,《腾讯研发大数据报告》正式发布!
- 河南省第十一届ACM程序设计竞赛 修路
- 推荐关注这7个高质量的前端公众号
- 赛门铁克运维注意事项
- linux开热点软件,在Ubuntu系统的电脑上开启无线热点全攻略,
- 时间加减计算器_小学生苦练加减乘除计算“基本功”,有没有必要?
- 《人月神话》阅读笔记3
- SV fork-join
- 从 Google 代码库找到的好东西【web开发方面】
- linux核心蜜罐系统,分析***,斩断黑手
- 启明星数据库批量备份与还原工具
- 计算机网络AD名词解释,计算机网络名词解释 AD是什么意思?
- js 实现2的n次方计算函数_x的10的n次方解决js浮点数计算
- 搭建STM32开发环境
- 磁盘介质受写入保护解决办法
- 常见的显示屏分辨率标准汇总
- 量子点对垒OLED,到底哪家强?
- 怎么制作地图分布图,如何在地图上画出区域
- 阻止checkbox选中态
热门文章
- 【机器人学】平面2R机器人(二)——逆运动学
- 推荐Android15个常用的图表库,包含线性,条形柱状,饼状图,扇形,雷达,股票,折线,散点,仪表盘......
- SyntaxError: Non-UTF-8 code starting with ‘\xe8‘ in file解决方法
- 利用INF写注册表启动 及 浅析瑞星行为防御、360主动防御
- Windows修改为Mac的字体方法
- 【微信小程序】微信课程群二维码查询
- 什么技术,让ta拿下中国移动大奖?
- 二线制仪表能用计算机电缆吗,一体化温度变送器热电阻输出:二线制 4-20mA DC
- 标准日语初级 测试题
- 解决EOS启动“不能连接到Server”的问题