程序查找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