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

蓝桥杯ADV-157——算法提高 现代诗如蚯蚓

2017-03-11 22:29 260 查看
 算法提高 现代诗如蚯蚓  

时间限制:1.0s   内存限制:256.0MB
    

问题描述

  现代诗如蚯蚓

  断成好几截都不会死

  字符串断成好几截

  有可能完全一样

  请编写程序

  输入字符串

  输出该字符串最多能断成多少截完全一样的子串

输入格式

  一行,一个字符串

输出格式

  一行,一个正整数表示该字符串最多能断成的截数

样例输入

abcabcabcabc

样例输出

4

样例说明

  最多能断成四个”abc”,也就是abc重复四遍便是原串

  同时也能断成两个”abcabc”

  最坏情况是断成一个原串”abcabcabcabc”

数据规模和约定

  字符串长度<=1000

import java.util.Scanner;

/**
*
* @author hhit.soft141.xxf
* @date 2017-2-11
* 注释:本题和周期子串那题相似
*
*/
public class Main {

/**
* @param args
*/
public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
String string = scanner.next();
char[] charArray = string.toCharArray();
int state = 0;
for (int i = 1; i < charArray.length; i++) {
if (charArray[0] == charArray[i]) {
int len = i;

for (int j = i; j < charArray.length; j++) {
if (!(charArray[j] == charArray[j % len] && charArray.length % len == 0)) {
state = 1;

}
}
if (state == 0) {

System.out.println(charArray.length / len);
break;
}
if (state == 1 && i == charArray.length - 1) {
System.out.println("1");
break;
}
state = 0;
} else {
if (i == charArray.length - 1) {
System.out.println(1);
}
}
}

if (charArray.length == 1) {
System.out.println(1);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息