首页 > 试题广场 >

循环单词

[编程题]循环单词
  • 热度指数:10311 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。

输入描述:
输入包括n+1行:
第一行为单词个数n(1 ≤ n ≤ 50)
接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成


输出描述:
输出循环单词的种数
示例1

输入

5
picture
turepic
icturep
word
ordw

输出

2
示例2

输入

4
goran
igor
domagoj
relja

输出

4

说明

并不是必须包含两个或两个以上的不同单词才算一种循环单词!  
n = int(raw_input())
word = []
for x in xrange(n):
    word.append(raw_input())
i = n-1
while i >= 0:
    j = len(word) - 1
    while j >= 0:
        if j>=0 and i > j and sorted(word[i]) == sorted(word[j]):
            for x in xrange(len(word[i])):
                if word[i][x:]+word[i][:x] == word[j]:
                    word.remove(word[j])
                    i -= 1 #i从下标最大值开始,移除了一个下标为j的元素,下标前移。
                           #j在后面的语句中下标前移
                    break
        j -= 1
    i -= 1
print len(word)

编辑于 2017-03-19 15:52:31 回复(0)

热门推荐

通过挑战的用户