Python程序:计算一组单词有多少个不同的旋转组

Python程序:计算一组单词有多少个不同的旋转组

假设我们有一个字符串的旋转组,其中包含所有唯一的旋转。如果输入为“567”,则可以旋转为“675”和“756”,它们都在同一个旋转组中。现在,如果我们有一个字符串列表words,我们必须按它们的旋转组将每个单词分组,并找到总组数。

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

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

  • s:一个新的集合
  • ct:0
  • 对于每个i在words中,执行以下操作
    • 如果i不在s中,则
      • ct:= ct +1
    • 对于从0到i的大小的j,执行以下操作
      • temp:从i的索引j连接i的子字符串[从开头到j]的子字符串
      • 将temp插入到s中
  • 返回ct

让我们看以下实现,以获得更好的理解。

更多Python相关文章,请阅读:Python 教程

示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程