953. Verifying an Alien Dictionary

 

In an alien language, surprisingly they also use english lowercase letters, but possibly in a different order. The order of the alphabet is some permutation of lowercase letters.

Given a sequence of words written in the alien language, and the orderof the alphabet, return true if and only if the given words are sorted lexicographicaly in this alien language.

 

Example 1:

Input: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
Output: true
Explanation: As 'h' comes before 'l' in this language, then the sequence is sorted.

Example 2:

Input: words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
Output: false
Explanation: As 'd' comes after 'l' in this language, then words[0] > words[1], hence the sequence is unsorted.

Example 3:

Input: words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz"
Output: false
Explanation: The first three characters "app" match, and the second string is shorter (in size.) According to lexicographical rules "apple" > "app", because 'l' > '∅', where '∅' is defined as the blank character which is less than any other character (More info).

 

Note:

  1. 1 <= words.length <= 100
  2. 1 <= words[i].length <= 20
  3. order.length == 26
  4. All characters in words[i] and order are english lowercase letters.

根据order里字母出现的顺序,判断words中的值是不是有序的,即是否words[0]<words[1]<...words[len(words)-1]

用python内建的enumerate函数:
enumerate(list,start=0)
上述函数中,list是一个可迭代的对象,可以是列表,字典,文件对象等等。

enumerate返回的是下标和item组成的元组:

a=['ab', 'bc', 'cc']

>>> list(enumerate(a))
[(0, 'ab'), (1, 'bc'), (2, 'cc')]

可以是字典
>>> dict(enumerate(a))
{0: 'ab', 1: 'bc', 2: 'cc'}

 

class Solution:
    def isAlienSorted(self, words, order):
        """
        :type words: List[str]
        :type order: str
        :rtype: bool
        """
        dictm={}
       # words=["word","world","row"]

        #order="worldabcefghijkmnpqstuvxyz"
        #dictm=dict(enumerate(order))
        for k, i in enumerate(order):             
            dictm[i] = k
    
        for i in range(len(words)-1):
            b=0
            x=words[i]
            y=words[i+1]
            for j in range (min(len(x),len(y))):
                if dictm[x[j]] > dictm[y[j]]:
                    return False
                if dictm[x[j]] < dictm[y[j]]:
                    b=1
                    break
            if b==0 and len(x) > len(y):
                return False
        return True
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值