描述:
判断给定的一个数字,把它当成字符串以后,该字符串中是否包含相同的两个子串,子串的长度要求大于等于2。
比如:12123,该数字包含两个“12”子串;
又比如:1223122,该数字包含两个“122”子串。
运行时间限制: 无限制
内存限制: 无限制
输入:
待判断的正整型数字,最大长度为9。
输出:
0:不包含;
1:包含。
样例输入:
12123
样例输出:
1
我的答案(Java):
import java.util.Scanner;
public class Main{
private String data;
/**
* 输入
*/
public void input(){
Scanner sc=new Scanner(System.in);
data=sc.nextLine();// 读取一行
sc.close();
// 判断输入是否合法
if(data!=null&&data.length()>9){
data=null;
return;
}
final int len=data.length();
for(int i=0;i<len;i++){
char ch=data.charAt(i);
if(ch<'1'||ch>'9'){
data=null;
return;
}
}
}
/**
* 寻找子串,只需要寻找长度为2的子串,长度大于2的子串肯定包含长度为2的子串
*/
public void search(){
if(data==null){
return;
}
String s=null;
int i=0;
final int len=data.length();
while(i<len-1){
s=data.substring(i, i+2);// 截取长度为2的子串
if(data.lastIndexOf(s)!=i){
System.out.println("1");
return;
}
i++;
}
System.out.println("0");
}
public static void main(String[] args){
Main m=new Main();
m.input();
m.search();
}
}