/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static boolean isPalindrome(int x) {
if (x == 0) return true;
if (x < 0) return false;
int digitsCount
= (int) Math.
log10(x
); return isPalindromeHelper(x, 0, digitsCount);
}
private static boolean isPalindromeHelper(int x, int leftIndex, int rightIndex) {
int leftDigit = getDigit(x, leftIndex),
rightDigit = getDigit(x, rightIndex);
if (leftIndex == rightIndex) {
return true;
}
else if (leftDigit != rightDigit) {
System.
out.
println("leftDigit="+leftDigit
+ ", rightDigit=" + rightDigit
); return false;
} else {
return isPalindromeHelper(x, leftIndex + 1, rightIndex - 1);
}
}
private static int getDigit(int x, int idx) {
int digitsCount
= (int) Math.
log10(x
); int divisor
= ((int) Math.
pow(10, digitsCount
- idx
)); if (divisor == 0) return x % 10;
System.
out.
println("divisor=" + divisor
+",(x/divisor) %10=" + (x
/divisor
)%10
); return (x / divisor) % 10;
}
{
System.
out.
println(Ideone.
isPalindrome(12321)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1BhbGluZHJvbWUoaW50IHgpIHsKICAgICAgICBpZiAoeCA9PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoeCA8IDApIHJldHVybiBmYWxzZTsKCiAgICAgICAgaW50IGRpZ2l0c0NvdW50ID0gKGludCkgTWF0aC5sb2cxMCh4KTsKICAgICAgICByZXR1cm4gaXNQYWxpbmRyb21lSGVscGVyKHgsIDAsIGRpZ2l0c0NvdW50KTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzUGFsaW5kcm9tZUhlbHBlcihpbnQgeCwgaW50IGxlZnRJbmRleCwgaW50IHJpZ2h0SW5kZXgpIHsKICAgICAgICBpbnQgbGVmdERpZ2l0ID0gZ2V0RGlnaXQoeCwgbGVmdEluZGV4KSwKICAgICAgICAgICAgcmlnaHREaWdpdCA9IGdldERpZ2l0KHgsIHJpZ2h0SW5kZXgpOwoKICAgICAgICBpZiAobGVmdEluZGV4ID09IHJpZ2h0SW5kZXgpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGxlZnREaWdpdCAhPSByaWdodERpZ2l0KSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibGVmdERpZ2l0PSIrbGVmdERpZ2l0ICsgIiwgcmlnaHREaWdpdD0iICsgcmlnaHREaWdpdCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gaXNQYWxpbmRyb21lSGVscGVyKHgsIGxlZnRJbmRleCArIDEsIHJpZ2h0SW5kZXggLSAxKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldERpZ2l0KGludCB4LCBpbnQgaWR4KSB7CiAgICAgICAgaW50IGRpZ2l0c0NvdW50ID0gKGludCkgTWF0aC5sb2cxMCh4KTsKICAgICAgICBpbnQgZGl2aXNvciA9ICgoaW50KSBNYXRoLnBvdygxMCwgZGlnaXRzQ291bnQgLSBpZHgpKTsKICAgICAgICBpZiAoZGl2aXNvciA9PSAwKSByZXR1cm4geCAlIDEwOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkaXZpc29yPSIgKyBkaXZpc29yKyIsKHgvZGl2aXNvcikgJTEwPSIgKyAoeC9kaXZpc29yKSUxMCk7CiAgICAgICAgcmV0dXJuICh4IC8gZGl2aXNvcikgJSAxMDsKICAgIH0KCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbihJZGVvbmUuaXNQYWxpbmRyb21lKDEyMzIxKSk7Cgl9Cn0=