## DEV Community

Abhishek Chaudhary

Posted on

# Longest Word in Dictionary

Given an array of strings `words` representing an English Dictionary, return the longest word in `words` that can be built one character at a time by other words in `words`.

If there is more than one possible answer, return the longest word with the smallest lexicographical order. If there is no answer, return the empty string.

Example 1:

Input: words = ["w","wo","wor","worl","world"]
Output: "world"
Explanation: The word "world" can be built one character at a time by "w", "wo", "wor", and "worl".

Example 2:

Input: words = ["a","banana","app","appl","ap","apply","apple"]
Output: "apple"
Explanation: Both "apply" and "apple" can be built from other words in the dictionary. However, "apple" is lexicographically smaller than "apply".

Constraints:

• `1 <= words.length <= 1000`
• `1 <= words[i].length <= 30`
• `words[i]` consists of lowercase English letters.

SOLUTION:

``````class Solution:
def longestWord(self, words: List[str]) -> str:
words = set(words)
mword = ""
for word in words:
n = len(word)
valid = True
for i in range(1, n):
if word[:i] not in words:
valid = False
break
if valid:
if len(word) > len(mword):
mword = word
elif len(word) == len(mword) and word < mword:
mword = word
return mword
``````