# PALIN: getting wrong answer. Tried every test case i could think of

this is my code link. i will tell the logic i have used.
i dealt with single digit no. separately as well as all 9s. Then i divided the string in two halves, and compared them. If the first part comes out to be greater than other i reverse it and concatenate it otherwise i increment it and concatenate it.
http://www.codechef.com/viewsolution/4605014

import java.util.Arrays;

public class Main {

``````static int[] arr = new int[1000002];
static StringBuilder sb = new StringBuilder();

public static void stringToIntArr(String s) {
int len = s.length();

for (int i = 0; i < len; i++) {
arr[i] = Integer.parseInt("" + s.charAt(i));
}
}

public static void palin(String s) {
int len = s.length();
boolean flag9 = true;
int i = 0;
stringToIntArr( s);
if (len <= 1) {
System.out.print(11);
return;
}
if (len == 2) {
int a1 = Integer.parseInt(s);
if (a1 == 99) {
System.out.print(101);

} else	if (a1 == 10) {
System.out.print(11);
} else {
for (i = 1; i <= 9; i++) {
if ((11 * i <= a1) && a1 < (11 * (1 + i))) {
System.out.print(11*(i+1));
break;
}
}
}
return;
}

int mid = 0, j;
boolean isodd = true;
if ((len & 1) != 0) {
mid = (len - 1) >> 1;
i = mid - 1;
j = mid + 1;

} else {
isodd = false;
mid = (len - 1) >> 1;
i = mid;
j = mid + 1;
}

for (int k = i, z=j; k>=0;k--,z++) {
if (arr[k] != 9||arr[k]!=arr[z]) {
flag9 = false;
break;
} else
continue;
}

if (flag9 == true) {
len++;
Arrays.fill(arr,0, len, 0);// prints the new number
arr[0] = 1;
arr[len-1] = 1;

System.out.print(printArray(len ));
sb = sb.delete(0, sb.length());
return;
}

// cal the mid ele

while (i >= 0&&j <=len) {

if (arr[i] != arr[j]) {

break;
}
i--;
j++;

}

if (i<0) {// number given is a palindrome just increment the middle
// element
//System.out.println("1");
IncrementAndCreateMirrorLeftPalin(mid, len);

} else {// the string is half matched
//System.out.println("2");

boolean incre=false;
if(arr[i]<arr[j])incre=true;

while (j <= len && i >= 0) {
arr[j] = arr[i];
i--;
j++;
//System.out.println("--");

}
if(incre)IncrementAndCreateMirrorLeftPalin(mid, len);
else
System.out.print(printArray(len));
sb.delete(0, sb.length());
}

}

public static void IncrementAndCreateMirrorLeftPalin(int mid, int len){
//System.out.println("2*");

int i,j;
int carry = 0;
if ((len & 1) != 0) {
i = mid - 1;
j = mid + 1;

arr[mid]++;
if (arr[mid] == 10) {
arr[mid] = 0;
carry = 1;
}
} else {
i = mid;
j = mid + 1;

arr[i]++;
if (arr[i] == 10) {
arr[i] = 0;
carry = 1;
}
arr[j]=arr[i];
}

while (carry != 0) {
arr[i] += carry;
if (arr[i] == 10) {
arr[i] = 0;
arr[j] = arr[i];
carry = 1;
i--;
j++;
} else
carry = 0;
if (i < 0)
break;
}
if (carry == 1)
System.out.print(printArray(carry, len));
else
System.out.print(printArray(len));
sb = sb.delete(0, sb.length());
}

static String printArray(int len) {
//	System.out.println("2**");

for (int i = 0; i < len; i++) {
sb.append(arr[i]);
//	System.out.println("2*");

}

return sb.toString();
}

static String printArray(int carry, int len) {
sb.append(carry);

for (int i = 0; i < len; i++) {
sb.append(arr[i]);
}
sb.append(carry);
return sb.toString();
}

public static void main(String[] args) throws java.lang.Exception {
try {

String s;
int m = Integer.parseInt(s);

while ((s = r.readLine()) != null) {
if(s.isEmpty())break;
m--;
palin(s);
if(m>0)System.out.print("\n");
}
} catch (Exception e) {
System.out.println("ex" + e.toString());
e.printStackTrace();
System.exit(0);
// orsimply
// return;

}
}
``````

}
What is wrong with the output ? What they want, I;m consumed in checking test cases.
Is there any problem of newline? can any one provide me test cases for successful submission?