package com.interview.books.svinterview;
/**
* Created_By: stefanie
* Date: 14-12-8
* Time: 下午10:00
*/
public class SV22_AggregatedNumber {
public boolean isAggredated(String number){
for(int i = 1; i < number.length()/2; i++){ //enumerate the 1st number.
for(int j = i + 1; j <= number.length() / 2 + 1; j++){ //enumerate the 2nd number.
//check if number[0,i-1] and number[i,j-1]
if(isMatch(i, j, number)) return true;
}
}
return false;
}
private boolean isMatch(int i, int j, String number){
int first = Integer.parseInt(number.substring(0, i));
int second = Integer.parseInt(number.substring(i, j));
while(true){
int third = first + second;
String thirdString = String.valueOf(third);
if(number.length() < j + thirdString.length()) break;
String substring = number.substring(j, j + thirdString.length());
if(!thirdString.equals(substring)) return false;
first = second;
second = third;
j += thirdString.length();
}
return j == number.length();
}
public static void main(String[] args){
SV22_AggregatedNumber checker = new SV22_AggregatedNumber();
System.out.println(checker.isAggredated("112358"));
System.out.println(checker.isAggredated("122436"));
System.out.println(checker.isAggredated("1232447"));
System.out.println(checker.isAggredated("1232547"));
}
}