Hi, I am solving Next palindrome problem. Could submit my solution in Codechef but in Spoj it says wrong answer. Please help me to find out the test case where it is falling.
public class ThenNextPallindrom2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int t = 0;
Scanner sc = new Scanner(System.in);
if(sc.hasNextInt()) {
t = sc.nextInt();
}
int[] arr, arr2;
while(t > 0) {
t--;
long n = 0;
if(sc.hasNextLong()) {
n = sc.nextLong();
}
arr = getNumArray(n);
if(all9(arr)) {
arr2 = new int[arr.length + 1];
arr2[0] = 1;
for(int i=0;i<arr.length;i++) {
arr2[i+1] = 0;
}
arr2[arr2.length -1] = 1;
arr = arr2;
} else{
int mid = arr.length/ 2;
int left = mid-1;
int right = arr.length % 2 == 1 ? mid + 1 : mid;
boolean left_small = false;
while(left >= 0 && arr[left] == arr[right]) {
left--;
right++;
}
if(left < 0 || arr[left] < arr[right]) left_small = true;
if(!left_small) {
while(left >= 0) {
arr[right++] = arr[left--];
}
} else {
// left is small
mid = arr.length/ 2;
left = mid-1;
int carry = 1;
if(arr.length % 2 == 0) {
right = mid;
} else {
arr[mid] += carry;
carry = arr[mid]/10;
arr[mid] %= 10;
right = mid + 1;
}
while(left >= 0) {
arr[left] += carry;
carry = arr[left] / 10;
arr[left] %= 10;
arr[right++] = arr[left--];
}
}
}
printArray(arr);
}
}
public static boolean isPallindrom(int[] arr) {
boolean flag = true;
int mid = arr.length/2;
int left = mid - 1;
if(arr.length%2 != 0) {
mid = mid + 1;
}
while( left>= 0) {
if(arr[left] != arr[mid]) {
flag = false;
break;
}
left--;
mid++;
}
return flag;
}
public static boolean all9(int[] arr) {
for(int i=0;i<arr.length;i++) {
if(arr[i] != 9)return false;
}
return true;
}
public static void printArray(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]);
}
System.out.println();
}
public static int[] getNumArray(long n) {
int[] arr;
int count = 0;
int divisor = 1;
while(n / divisor != 0) {
divisor *= 10;
count++;
}
arr = new int[count];
divisor = 10;
for(int i=count - 1; i>= 0;i--) {
arr[i] = (int) (n % divisor);
n = n / 10;
}
return arr;
}
}