Skip to content

Commit 53b18ec

Browse files
refactor 564
1 parent adb7ca7 commit 53b18ec

File tree

1 file changed

+37
-36
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+37
-36
lines changed

src/main/java/com/fishercoder/solutions/_564.java

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -19,50 +19,51 @@
1919
2020
*/
2121
public class _564 {
22+
public static class Solution1 {
2223

23-
public String nearestPalindromic(String n) {
24-
if (n.length() >= 2 && allNine(n)) {
25-
String s = "1";
26-
for (int i = 0; i < n.length() - 1; i++) {
27-
s += "0";
28-
}
29-
s += "1";
30-
return s;
31-
}
32-
boolean isOdd = (n.length() % 2 != 0);
33-
String left = n.substring(0, (n.length() + 1) / 2);
34-
long[] increment = {-1, 0, +1};
35-
String ret = n;
36-
long minDiff = Long.MAX_VALUE;
37-
for (long i : increment) {
38-
String s = getPalindrom(Long.toString(Long.parseLong(left) + i), isOdd);
39-
if (n.length() >= 2 && (s.length() != n.length() || Long.parseLong(s) == 0)) {
40-
s = "";
41-
for (int j = 0; j < n.length() - 1; j++) {
42-
s += "9";
24+
public String nearestPalindromic(String n) {
25+
if (n.length() >= 2 && allNine(n)) {
26+
String s = "1";
27+
for (int i = 0; i < n.length() - 1; i++) {
28+
s += "0";
4329
}
30+
s += "1";
31+
return s;
4432
}
45-
long diff = s.equals(n) ? Long.MAX_VALUE : Math.abs(Long.parseLong(s) - Long.parseLong(n));
46-
if (diff < minDiff) {
47-
minDiff = diff;
48-
ret = s;
33+
boolean isOdd = (n.length() % 2 != 0);
34+
String left = n.substring(0, (n.length() + 1) / 2);
35+
long[] increment = {-1, 0, +1};
36+
String ret = n;
37+
long minDiff = Long.MAX_VALUE;
38+
for (long i : increment) {
39+
String s = getPalindrom(Long.toString(Long.parseLong(left) + i), isOdd);
40+
if (n.length() >= 2 && (s.length() != n.length() || Long.parseLong(s) == 0)) {
41+
s = "";
42+
for (int j = 0; j < n.length() - 1; j++) {
43+
s += "9";
44+
}
45+
}
46+
long diff = s.equals(n) ? Long.MAX_VALUE : Math.abs(Long.parseLong(s) - Long.parseLong(n));
47+
if (diff < minDiff) {
48+
minDiff = diff;
49+
ret = s;
50+
}
4951
}
52+
return ret;
5053
}
51-
return ret;
52-
}
5354

54-
private String getPalindrom(String s, boolean isOdd) {
55-
String right = new StringBuilder(s).reverse().toString();
56-
return isOdd ? s.substring(0, s.length() - 1) + right : s + right;
57-
}
55+
private String getPalindrom(String s, boolean isOdd) {
56+
String right = new StringBuilder(s).reverse().toString();
57+
return isOdd ? s.substring(0, s.length() - 1) + right : s + right;
58+
}
5859

59-
private boolean allNine(String s) {
60-
for (int i = 0; i < s.length(); i++) {
61-
if (s.charAt(i) != '9') {
62-
return false;
60+
private boolean allNine(String s) {
61+
for (int i = 0; i < s.length(); i++) {
62+
if (s.charAt(i) != '9') {
63+
return false;
64+
}
6365
}
66+
return true;
6467
}
65-
return true;
6668
}
67-
6869
}

0 commit comments

Comments
 (0)