版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maotianyi941005/article/details/85156357
In English, we have a concept called
root
, which can be followed by some other words to form another longer word - let's call this wordsuccessor
. For example, the rootan
, followed byother
, which can form another wordanother
.Now, given a dictionary consisting of many roots and a sentence. You need to replace all the
successor
in the sentence with theroot
forming it. If asuccessor
has manyroots
can form it, replace it with the root with the shortest length.You need to output the sentence after the replacement.
Example 1:
Input: dict = ["cat", "bat", "rat"] sentence = "the cattle was rattled by the battery" Output: "the cat was rat by the bat"Note:
- The input will only have lower-case letters.
- 1 <= dict words number <= 1000
- 1 <= sentence words number <= 1000
- 1 <= root length <= 100
- 1 <= sentence words length <= 1000
要求把带有词根的单词换成词根返回
1 时间复杂度O(n2) not fast(Accepted)
class Solution:
def replaceWords(self, dict, sentence):
"""
:type dict: List[str]
:type sentence: str
:rtype: str
"""
words = sentence.split()
str = []
for i,w in enumerate(words):
flag = 0
for root in dict:
if root in w and w.index(root) == 0:
flag = 1
str.append(root)
break
if flag == 0:str.append(w)
return " ".join(str)