文章目录

  • 题目
  • 示例
  • 思路
  • 代码

题目

某种外星语也使用英文小写字母,但可能顺序 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 中的所有字符都是英文小写字母。

思路

字符串匹配问题,我的思路是先将给定词典规则放入哈希表中准备,然后遍历所有给定数组中的字符串,将每个字符串与后面一个字符串逐个字符比较,判断是否符合哈希表中的规则。

具体比较细节:

  1. 比较是按照两者字符串长度较短的长度进行的,不然会下标溢出
  2. 比较有四种情况
    ①前面字符串的字符小于后面字符串,说明前面字符串符合规则,到下一字符串比较
    ②前面字符串的字符大于后面字符串,说明前面的字符串不符合规则,直接返回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. 验证外星语词典相关推荐

  1. LeetCode 812. 最大三角形面积(再次用到凸包的Andrew算法) / 面试题 04.06. 后继者 / 953. 验证外星语词典

    812. 最大三角形面积 2022.5.15 每日一题 题目描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0, ...

  2. 953. 验证外星语词典( 简单模拟 + 自定义定制排序 )

    文章目录 Question Ideas 1.Answer( Java ) - 自定义定制排序 Code 2.Answer( Java ) - 简单模拟 Code Question 953. 验证外星语 ...

  3. 题目:953.验证外星语词典

    ​ ​题目来源: leetcode题目,网址:953. 验证外星语词典 - 力扣(LeetCode) 解题思路: 遍历字符串,以连续两个为一组判断其是否符合外星语词典的字典序. 可以使用 int 数组 ...

  4. 力扣953. 验证外星语词典

    力扣953. 验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 ...

  5. 953. 验证外星语词典

    力扣打卡:953. 验证外星语词典 解题思路 思路 使用HashMap统计字典的顺序 从头开始,每次只比较两个字符串 循环比较,最后得到结果 解释 每次比较两个字符串,只有两种情况 从头开始比较字符 ...

  6. LeetCode 953. 验证外星语词典

    验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order (order.length==26)(order.length == 26)(order.length==26)不同.字母表的顺序 ...

  7. leetcode 953. 验证外星语词典 做题笔记

    题目: 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定 ...

  8. leetcode 953.验证外星语词典(js)

    题目 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的 ...

  9. LeetCode简单题之验证外星语词典

    题目 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的 ...

最新文章

  1. OKR案例分析,哪种类型的企业适合OKR?
  2. 【腾讯代码文化】人均3.6万行代码,《腾讯研发大数据报告》正式发布!
  3. 河南省第十一届ACM程序设计竞赛 修路
  4. 推荐关注这7个高质量的前端公众号
  5. 赛门铁克运维注意事项
  6. linux开热点软件,在Ubuntu系统的电脑上开启无线热点全攻略,
  7. 时间加减计算器_小学生苦练加减乘除计算“基本功”,有没有必要?
  8. 《人月神话》阅读笔记3
  9. SV fork-join
  10. 从 Google 代码库找到的好东西【web开发方面】
  11. linux核心蜜罐系统,分析***,斩断黑手
  12. 启明星数据库批量备份与还原工具
  13. 计算机网络AD名词解释,计算机网络名词解释 AD是什么意思?
  14. js 实现2的n次方计算函数_x的10的n次方解决js浮点数计算
  15. 搭建STM32开发环境
  16. 磁盘介质受写入保护解决办法
  17. 常见的显示屏分辨率标准汇总
  18. 量子点对垒OLED,到底哪家强?
  19. 怎么制作地图分布图,如何在地图上画出区域
  20. 阻止checkbox选中态

热门文章

  1. 【机器人学】平面2R机器人(二)——逆运动学
  2. 推荐Android15个常用的图表库,包含线性,条形柱状,饼状图,扇形,雷达,股票,折线,散点,仪表盘......
  3. SyntaxError: Non-UTF-8 code starting with ‘\xe8‘ in file解决方法
  4. 利用INF写注册表启动 及 浅析瑞星行为防御、360主动防御
  5. Windows修改为Mac的字体方法
  6. 【微信小程序】微信课程群二维码查询
  7. 什么技术,让ta拿下中国移动大奖?
  8. 二线制仪表能用计算机电缆吗,一体化温度变送器热电阻输出:二线制 4-20mA DC
  9. 标准日语初级 测试题
  10. 解决EOS启动“不能连接到Server”的问题