您的位置:首页 > 编程语言 > Java开发

牛客网编程题:循环单词(Java实现)

2017-03-17 12:48 155 查看
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。 


输入描述:

输入包括n+1行:

第一行为单词个数n(1 ≤ n ≤ 50)

接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成



输出描述:

输出循环单词的种数



输入例子:

5
picture
turepic
icturep
word
ordw



输出例子:

2


package string.test;

import java.util.Scanner;

public class Demo1 {
private int N;
private String[] arr;
private int count;

public static void main(String[] args) {
Demo1 demo = new Demo1();
Scanner sc = new Scanner(System.in);
demo.N = sc.nextInt();
demo.arr = new String[demo.N];
for (int i = 0; i < demo.N; i++) {
String str = sc.next();
demo.solve(str);
}
System.out.println(demo.count);
for (int i = 0; i < demo.count; i++) {
System.out.println(demo.arr[i]);
}
sc.close();
}

private void solve(String str) {
if (count == 0) {
arr[0] = str + str;
count++;
return;
}
boolean flag = false;
int num = count;
for (int i = 0; i < num; i++) {
//如果包含该单词,吧flag设置成ture,循环结束要记得把flag重新设置成false
if (judge(arr[i], str)) {
flag = true;
break;
}
}
if (flag != true) {
arr[count++] = str + str;

}
flag = false;
}
/*
* 如果str1包含str2.则返回true
*/
private boolean judge(String str1, String str2) {
if (str1.length() == str2.length())
return false;
//这里必须要验证str2是否为str1的一半,否则会无法通过
if (str1.contains(str2) && str1.length() == str2.length() * 2)
return true;
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: