题目:如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。
输入描述:
输入包括n+1行: 第一行为单词个数n(1 ≤ n ≤ 50) 接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成
注意的点:
这道题要求的是有多少种变体单词,只有一个单词、没有与之对应的循环单词,这种情况也算是一种……
比如输入:
1
abc
那么输出是1而不是0。简而言之,本题求的就是不管经过多少种变化之后,有多少种不同的单词。
完整代码(附带解题思路):if __name__ == '__main__':
cirWordSet = set() #创建一个空集合,用于接受每个单词的变形以及判断单词是否存在循环
n = int(input()) #接受输入个数变量
ans = 0 #最后答案循环个数
for i in range(n):
s = input() #用于接受每一个单词
len_s = len(s) #每个单词的长度
if s not in cirWordSet: #和已经有的单词做对比,如果不一样的话最后结果加1
ans += 1
cir_s = s + s
for i in range(len_s): #一个单词的长度有多少那么就有多少种变形,然后把全部的形态存入
cirWordSet.add(cir_s[i:len_s+i])
print(ans)



