程序查找Python单词列表中有多少个不同的旋转组

假设我们有一个旋转组,用于保存所有唯一旋转的字符串。如果输入是“ 567”,则可以将其旋转到“ 675”和“ 756”,并且它们都在同一旋转组中。现在,如果我们有一个字符串单词的列表,我们就必须按照单词的轮换组对其进行分组,并找到组的总数。

因此,如果输入像单词= [“ xyz”,“ ab”,“ ba”,“ c”,“ yzx”],则输出将为3,因为存在三个旋转组-[“ xyz”, “ yzx”],[“ ab”,“ ba”],[“ c”]。

为了解决这个问题,我们将遵循以下步骤-

  • s:=新集

  • ct:= 0

  • 对于每个我说的话

    • temp:= i的子字符串[从索引j到结尾]连接i的子字符串[从开始到j])

    • 将温度插入s

    • ct:= ct + 1

    • 如果我不在,那

    • 对于范围0到i大小的j,执行

    • 返回ct

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, words):
          s=set()
          ct=0
          for i in words:
             if i not in s:
                ct+=1
             for j in range(len(i)):
                s.add(i[j:]+i[:j])
          return ct
    ob = Solution()print(ob.solve(["xyz", "ab", "ba", "c", "yzx"]))

    输入项

    ["xyz", "ab", "ba", "c", "yzx"]

    输出结果

    3
    猜你喜欢