Intuition:
- Store the alien alphabet in a dictionary so that lookup can be in O(1)
Gotchas
- Not all characters need to be verified, only when the characters are equal
- The words might not be of the same length
Base case:
- at least two words to be given
Solution:
class Solution:
def isAlienSorted(self, words: List[str], order: str) -> bool:
order = { v:k for k,v in enumerate(order) }
if len(words) < 2:
return True
i = 0
j = 1
def compareWords(w1, w2):
i = 0
j = 0
while i < len(w1) and j < len(w2):
if order[w1[i]] < order[w2[j]]:
return True
elif order[w1[i]] > order[w2[j]]:
return False
else:
i += 1
j += 1
if len(w1) < len(w2):
return True
else:
return False
while j < len(words):
if not compareWords(words[i], words[j]):
return False
i += 1
j += 1
return True
Complexity Analysis:
O(N) where N is the length of all characters in the word list
Comments
comments powered by Disqus