2
static long pow(long base, long exp) {14
public String nearestPalindromic(String n) {15
long num = Long.parseLong(n);17
return String.valueOf(num - 1);19
long comp[] = new long[5];20
comp[0] = pow(10, n.length() - 1) - 1;21
comp[1] = pow(10, n.length()) + 1;22
int mid = (n.length() + 1) / 2;23
long half = Long.parseLong(n.substring(0, mid));24
long pref[] = {half, half + 1, half - 1};25
for (int i = 0; i < 3; i++) {26
StringBuilder st = new StringBuilder(String.valueOf(pref[i]));27
if (n.length() % 2 == 1) st.deleteCharAt(st.length() - 1);29
comp[i + 2] = Long.parseLong(String.valueOf(pref[i]) + st.toString());31
long min = Long.MAX_VALUE;32
long ans = Long.MAX_VALUE;33
for (int i = 0; i < 5; i++) {34
long dif = Math.abs(num - comp[i]);35
if (dif != 0 && min > dif) {38
} else if (min == dif) ans = Math.min(ans, comp[i]);40
return String.valueOf(ans);