目录

1. 问题描述

2. 思路与算法

3. 代码实现


1. 问题描述

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

2. 思路与算法

首先比较第1个单词与第2个单词,看是否符合词典序;如果符合的话,比较第2个单词与第3个单词;。。。;直到比较到最后,或者中途发现不满足词典序的提前退出。

两个单词之间是否符合词典序,则从两者第1个字母开始比较,如果满足,则比较两者的第2个字母;。。。;直到比较到最后,或者中途发现不满足词典序的提前退出。

以下以compare函数实现word1和word2的比较,word1为在words中靠前的单词。如果我word1的词典序顺位比words2早则返回True。

在两个单词等长时,逐个比较即可;

如果word1长度大于word2长度,则如果在word2长度内没有分出胜负,表明word1是排在word2之后,应该返回False;

如果word1长度小于word2长度,则如果在word1长度内没有分出胜负,表明word1是排在word2之前,应该返回True;

以下实现中,为了提高查询效率,预先基于order建立哈希表。

3. 代码实现

class Solution:def isAlienSorted(self, words: List[str], order: str) -> bool:d = dict()for k in range(len(order)):d[order[k]] = kdef compare(word1, word2):for k in range(min(len(word1),len(word2))):if d[word1[k]] > d[word2[k]]:return Falseelif d[word1[k]] < d[word2[k]]:return Trueif len(word1) > len(word2):return Falsereturn Truefor j in range(len(words)-1):if not compare(words[j],words[j+1]):return Falsereturn True

执行用时:28 ms, 在所有 Python3 提交中击败了97.84%的用户

内存消耗:15.2 MB, 在所有 Python3 提交中击败了5.39%的用户

回到总目录:Leetcode每日一题总目录(动态更新。。。)

Leetcode0953. 验证外星语词典(simple)相关推荐

  1. 有效的括号长按键入验证外星语词典字符的最短距离用栈实现队列

    有效的括号 来源:杭哥 20. 有效的括号 - 力扣(LeetCode) bool isValid(char * s) {int sz=strlen(s);char stack[sz];int k=0 ...

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

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

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

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

  4. 哈希表题目:验证外星语词典

    文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 解法 思路和算法 代码 复杂度分析 题目 标题和出处 标题:验证外星语词典 出处:953. 验证外星语词典 难度 3 级 题目描述 要 ...

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

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

  6. 953. 验证外星语词典

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

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

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

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

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

  9. 验证外星语词典(2022-5-17)每日一练

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

最新文章

  1. Kafka系列三 java API操作
  2. BidNet:无视差估计的双目图像去雾(CVPR2020)
  3. 求一个字符串中连续出现次数最多的子串
  4. Python Unicode与中文处理
  5. Linux下编写选择排序(C语言)
  6. es6与java的相似度_计算字符串的相似度-两种解法
  7. 现在比较流行的三级菜单,京东商城,淘宝网效果等等。(修正版)
  8. 趁webpack5还没出,先升级成webpack4吧
  9. 过滤器实栗 登录检测
  10. linux getline函数用法,get()与getline()
  11. 基于JAVA+Servlet+JSP+MYSQL的人力资源管理系统
  12. getElementByID() getElementsByName() getElementsByTagName()的区别 .
  13. python中的time的时间戳_python中time、date、时间戳的转换
  14. border 0px和border none的区别
  15. php做抖音在微信中播放,微信小程序实现抖音播放效果的实例代码
  16. C++连接MySQL数据库教程|如何连接数据库
  17. Powermill数控编程培训,潇洒模具三步教您精通cnc数控编程
  18. 线段树——区间合并(模板题)
  19. 需求的获取:需求调研中的5W+1H定律
  20. unity引用动态库的错误解决办法

热门文章

  1. Java设计模式策略模式(附实例代码)每天一学设计模式
  2. 遥感在计算机领域的应用,浅谈遥感技术在测绘领域发展应用.doc
  3. C++ sort 排序函数使用方法
  4. 【ThreeJS基础教程-初识Threejs】1.2掌控我们的物体和模型
  5. 智慧燃气系统基于GIS技术的搭建
  6. 解决Mac上MAMP Pro 80端口被占用
  7. IC后端物理实现自动化工具 OpenROAD系列(三)ibex-32位2级流水线 RISC-V CPU 的物理实现
  8. VSCode+latex引用bibtex参考文献
  9. [rtsp @ 0x55ba1dae9200] UDP timeout, retrying with TCP的解决办法
  10. Python nonlocal