1. 程式人生 > >華為機試題:判斷一個數字中是否包含兩個相同的子串

華為機試題:判斷一個數字中是否包含兩個相同的子串

描述:
判斷給定的一個數字,把它當成字串以後,該字串中是否包含相同的兩個子串,子串的長度要求大於等於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(); } }