算法提高 现代诗如蚯蚓
/*
* @author :
* @version : 2018/3/8 22:45.
* 说明:
*/
import java.util.Scanner;
/**
*
算法提高 现代诗如蚯蚓
时间限制:1.0s 内存限制:256.0MB
问题描述
现代诗如蚯蚓
断成好几截都不会死
字符串断成好几截
有可能完全一样
请编写程序
输入字符串
输出该字符串最多能断成多少截完全一样的子串
输入格式
一行,一个字符串
输出格式
一行,一个正整数表示该字符串最多能断成的截数
样例输入
abcabcabcabc
样例输出
4
样例说明
最多能断成四个”abc”,也就是abc 重复四遍便是原串
同时也能断成两个”abcabc”
最坏情况是断成一个原串”abcabcabcabc”
数据规模和约定
字符串长度<=1000
*/
这一题其实是C语言网的一篇文章的写法.
public class Main {
private static int count;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int length=s.length(); // 字符串长度
int min = 1001; // 假设截取到的字符串长度额为1001
if(length==0)return;
for(int i=1;i<length;i++){ // i表示截取的终点
int k=i;
while(k+i <= length){
if(!(s.substring(0, i)).equals(s.substring(k,k+i))) // 判断开始处的字符串是否相等,不相等则跳出循环
break;
else if(k+i==length){ // 前面的串相等
if(i<min){
min=i;
}
}
k+=i;
}
}
if(min == 1001) // 字符串为原串时,min没有改变,此时字符串长度就是length
min=length;
System.out.println(length/min);
}
}