大家好,我是 @负雪明烛。点击右上方的「+关注」↗,优质题解不间断!
题目大意
- 外星语也有 26 个英文字母组成,但是字母表顺序不是
"abc...xyz"
而是重新排序后的order
。- 比如
order = "hlabcdefgijkmnopqrstuvwxyz"
,那么h
是第一个字母,l
是第二个字母…
- 比如
- 现在给了一些外星语的单词
words
,判断words
是不是外星语的字典序。
所谓字典序,以正常的英文字母表为例,见插图的解释:
解题方法
解密
这个外星语的题目,有点类似于凯撒密码:把字母表重新排列,根据映射关系就可以实现加密、解密。
本题中,order
就相当于映射后的字母表,words
就相当于加密后的密文。
我们可以根据映射关系,解密成以正常英文字母序表示的明文。
一般编程语言都实现了对英文字符串比较大小,我们直接使用。
class Solution(object):
def isAlienSorted(self, words, order):
"""
:type words: List[str]
:type order: str
:rtype: bool
"""
mapping = dict()
for i, c in enumerate(order):
mapping[c] = i
decrypt = []
for word in words:
decrypt.append("".join([chr(ord('a') + mapping[c]) for c in word]))
return decrypt == sorted(decrypt)
复杂度
- 简单题,重要的是理解题意,按照题意去做就行。
我是 @负雪明烛 ,刷算法题 1000 多道,写了 1000 多篇算法题解,收获阅读量 300 万。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。
- 在刷题的时候,如果你不知道该怎么刷题,可以看 LeetCode 应该怎么刷?
- 如果你觉得题目太多,想在短时间内快速提高,可以看 LeetCode 最经典的 100 道题。
- 送你一份刷题的代码模板:【LeetCode】代码模板,刷题必会
- 我写的 1000 道 LeetCode 题解,都在这里了,免费拿走。