華為機試題:判斷一個數字中是否包含兩個相同的子串
阿新 • • 發佈:2019-02-16
描述:
判斷給定的一個數字,把它當成字串以後,該字串中是否包含相同的兩個子串,子串的長度要求大於等於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();
}
}