Leetcode0953. 验证外星语词典(simple)
目录
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)相关推荐
- 有效的括号长按键入验证外星语词典字符的最短距离用栈实现队列
有效的括号 来源:杭哥 20. 有效的括号 - 力扣(LeetCode) bool isValid(char * s) {int sz=strlen(s);char stack[sz];int k=0 ...
- 953. 验证外星语词典( 简单模拟 + 自定义定制排序 )
文章目录 Question Ideas 1.Answer( Java ) - 自定义定制排序 Code 2.Answer( Java ) - 简单模拟 Code Question 953. 验证外星语 ...
- 题目:953.验证外星语词典
题目来源: leetcode题目,网址:953. 验证外星语词典 - 力扣(LeetCode) 解题思路: 遍历字符串,以连续两个为一组判断其是否符合外星语词典的字典序. 可以使用 int 数组 ...
- 哈希表题目:验证外星语词典
文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 解法 思路和算法 代码 复杂度分析 题目 标题和出处 标题:验证外星语词典 出处:953. 验证外星语词典 难度 3 级 题目描述 要 ...
- LeetCode 812. 最大三角形面积(再次用到凸包的Andrew算法) / 面试题 04.06. 后继者 / 953. 验证外星语词典
812. 最大三角形面积 2022.5.15 每日一题 题目描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积. 示例: 输入: points = [[0,0],[0, ...
- 953. 验证外星语词典
力扣打卡:953. 验证外星语词典 解题思路 思路 使用HashMap统计字典的顺序 从头开始,每次只比较两个字符串 循环比较,最后得到结果 解释 每次比较两个字符串,只有两种情况 从头开始比较字符 ...
- LeetCode 953. 验证外星语词典
验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order (order.length==26)(order.length == 26)(order.length==26)不同.字母表的顺序 ...
- 力扣953. 验证外星语词典
力扣953. 验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words,以及其字母表的顺序 ...
- 验证外星语词典(2022-5-17)每日一练
953. 验证外星语词典 (2022-5-17) 某种外星语也使用英文小写字母,但可能顺序 order 不同.字母表的顺序(order)是一些小写字母的排列. 给定一组用外星语书写的单词 words, ...
最新文章
- Kafka系列三 java API操作
- BidNet:无视差估计的双目图像去雾(CVPR2020)
- 求一个字符串中连续出现次数最多的子串
- Python Unicode与中文处理
- Linux下编写选择排序(C语言)
- es6与java的相似度_计算字符串的相似度-两种解法
- 现在比较流行的三级菜单,京东商城,淘宝网效果等等。(修正版)
- 趁webpack5还没出,先升级成webpack4吧
- 过滤器实栗 登录检测
- linux getline函数用法,get()与getline()
- 基于JAVA+Servlet+JSP+MYSQL的人力资源管理系统
- getElementByID() getElementsByName() getElementsByTagName()的区别 .
- python中的time的时间戳_python中time、date、时间戳的转换
- border 0px和border none的区别
- php做抖音在微信中播放,微信小程序实现抖音播放效果的实例代码
- C++连接MySQL数据库教程|如何连接数据库
- Powermill数控编程培训,潇洒模具三步教您精通cnc数控编程
- 线段树——区间合并(模板题)
- 需求的获取:需求调研中的5W+1H定律
- unity引用动态库的错误解决办法
热门文章
- Java设计模式策略模式(附实例代码)每天一学设计模式
- 遥感在计算机领域的应用,浅谈遥感技术在测绘领域发展应用.doc
- C++ sort 排序函数使用方法
- 【ThreeJS基础教程-初识Threejs】1.2掌控我们的物体和模型
- 智慧燃气系统基于GIS技术的搭建
- 解决Mac上MAMP Pro 80端口被占用
- IC后端物理实现自动化工具 OpenROAD系列(三)ibex-32位2级流水线 RISC-V CPU 的物理实现
- VSCode+latex引用bibtex参考文献
- [rtsp @ 0x55ba1dae9200] UDP timeout, retrying with TCP的解决办法
- Python nonlocal