假设我们有一个旋转组,用于保存所有唯一旋转的字符串。如果输入是“ 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