Leetcode 527 Solution
This article provides solution to leetcode question 527 (word-abbreviation)
Access this page by simply typing in "lcs 527" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/word-abbreviation
Solution
class Solution:
def wordsAbbreviation(self, words: List[str]) -> List[str]:
def make_abbv(word, prefix_len):
if prefix_len + 2 >= len(word):
return word
return word[:prefix_len] + str(len(word) - prefix_len - 1) + word[-1:]
prefix_lens = [1] * len(words)
res = [make_abbv(word, 1) for word in words]
for i, word in enumerate(words):
while True:
dup_set = set()
for j in range(i + 1, len(words)):
if res[i] == res[j]:
dup_set.add(j)
if not dup_set:
break
dup_set.add(i)
for k in dup_set:
prefix_lens[k] += 1
res[k] = make_abbv(words[k], prefix_lens[k])
return res