lintcode练习-671. 循环单词

671. 循环单词

The words are same rotate words if rotate the word to the right by loop, and get another. Count how many different rotate word sets in dictionary.

E.g. picture and turepic are same rotate words.

样例

Given dict = ["picture", "turepic", "icturep", "word", "ordw", "lint"]
return 3.

"picture", "turepic", "icturep" are same ratote words.
"word", "ordw" are same too.
"lint" is the third word that different from the previous two words.

注意事项

所有单词均为小写。

解题思路:

遍历words,如果word没有在s中出现,则count+1, 将word的全部形态都加入s中。

class Solution:
    """
    @param: words: A list of words
    @return: Return how many different rotate words
    """
    def countRotateWords(self, words):
        # Write your code here
        count = 0
        s = set()
        for word in words:
            if word not in s:
                count += 1
                s.add(word)
                changed = self.change_word(word)
                while changed != word:
                    s.add(changed)
                    changed = self.change_word(changed)
        return count
    
    
    def change_word(self, words):
        return words[len(words) - 1: ] + words[0:len(words) - 1]

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81778454