zanyaziz
BAN USERpublic static boolean isAggregatedNumberSequence(String numberSequenceStr) {
int isize = 1;
for(int i = 0; i + isize < numberSequenceStr.length(); isize++) {
int jsize = 1;
for(int j = i + isize; j + jsize < numberSequenceStr.length(); jsize++) {
int inti = Integer.parseInt(numberSequenceStr.substring(i, i + isize));
int intj = Integer.parseInt(numberSequenceStr.substring(j, j + jsize));
if (isAggregateNumber(inti, intj, numberSequenceStr.substring(j + jsize, numberSequenceStr.length()))) {
return true;
}
}
}
return false;
}
private static boolean isAggregateNumber(int prev, int current, String str) {
if(str.length() == 0) {
return true;
}
int next = prev + current;
if(str.startsWith(next + "")) {
return isAggregateNumber(current, next, str.replaceFirst(next + "", ""));
}
return false;
}
public static void main(String[] args) {
System.out.println(isAggregatedNumberSequence("123"));
System.out.println(isAggregatedNumberSequence("11111111112"));
System.out.println(isAggregatedNumberSequence("000"));
System.out.println(isAggregatedNumberSequence("11235813"));
System.out.println(isAggregatedNumberSequence("112112224"));
System.out.println(isAggregatedNumberSequence("124"));
}
This solution assumes a well formed string such that the string always has alphabets followed by digits.
- zanyaziz November 18, 2012