输入包括n+1行:
第一行为单词个数n(1 ≤ n ≤ 50)
接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成
输出循环单词的种数
5 picture turepic icturep word ordw
2
4 goran igor domagoj relja
4
并不是必须包含两个或两个以上的不同单词才算一种循环单词!
来个JavaScript版本
var rl = require("readline").createInterface(process.stdin, process.stdout);
var args = [];
rl.on('line', function(data){
args.push(data);
if(args.length >= parseInt(args[0] + 1)){
rl.close();
}
});
rl.on('close', function(){
var arr = args.slice(1);
var res = 0;
for(var i = 0 ; i < arr.length; i ++){
for(var j = i + 1; j < arr.length; j ++){
if(judge(arr[i], arr[j])){
// 如果两个是循环单词,就把arr[j]移除数组
arr.splice(j, 1);
j--;
}
}
}
res = arr.length;
console.log(res);
});
// 判断是否互为循环单词
function judge(str1, str2){
if(str1.split('').sort().join('') == str2.split('').sort().join('')){
var temp1, temp2;
for(var i = 0 ; i < str1.length; i ++){
temp1 = str1.slice(0, i);
temp2 = str1.slice(i);
if(str2 == temp2 + temp1){
return true;
}
}
}
return false;
}