Python程序:查找单词列表中不同旋转组的数量


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

因此,如果输入类似于words = ["xyz", "ab", "ba", "c", "yzx"],则输出将为3,因为有三个旋转组——["xyz", "yzx"], ["ab", "ba"], ["c"]。

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

  • s := 一个新的集合
  • ct := 0
  • 对于words中的每个i:
    • 如果i不在s中,则
      • ct := ct + 1
    • 对于范围从0到i的大小的j:
      • temp := i的子串(从索引j到结尾)连接i的子串(从开头到j)
      • 将temp插入s
  • 返回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

更新于:2020年10月5日

229 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.