953. Verifying an Alien Dictionary

953. Verifying an Alien Dictionary

[Easy] “Given a sequence of words written in an alien language, and the order of the alphabet, return true if and only if the given words are sorted lexicographicaly in this alien language."

Link to Leetcode

Note: old solution, should review (TODO:)

Python3:

class Solution:
    def isAlienSorted(self, words: List[str], order: str) -> bool:
        ordering = {letter: i for i, letter in enumerate(order)}
        words = [[ordering[letter] for letter in word] for word in words]
        return all(word1 <= word2 for word1, word2 in zip(words, words[1:]))
        
# less efficient solution        
#     def isAlienSorted(self, words: List[str], order: str) -> bool:
#         if not words:
#             return false

#         for i in range(1, len(words)):
#             # compare each pair of words
#             # if you encounter an out of order pair, return early
#             if not self.alien_ordered(words[i - 1], words[i], order):
#                 return False
            
#         return True
    
#     def alien_ordered(self, first: str, second: str, order: str) -> bool:
#         first_word = list(first)
#         second_word = list(second)
        
#         while first_word and second_word:
#             first_letter = first_word.pop(0)
#             second_letter = second_word.pop(0)
            
#             if order.index(first_letter) < order.index(second_letter):
#                 return True
#             elif order.index(first_letter) == order.index(second_letter):
#                 continue
#             else:
#                 return False
        
#         if first_word and not second_word:
#             return False
#         else:
#             return True