中级农民
- 积分
- 168
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-1-24
- 最后登录
- 1970-1-1
|
- public int minPalindrom(int number) {
- String numStr = String.valueOf(number);
- int len = numStr.length();
- String prefix = numStr.substring(0, len / 2);
- String reversedPrefix = new StringBuilder(prefix).reverse().toString();
- if (len % 2 == 0) {
- if (reversedPrefix.equals(numStr.substring(len / 2))) return number;
- if (Integer.valueOf(reversedPrefix) > Integer.valueOf(numStr.substring(len / 2))) {
- return Integer.valueOf(prefix + reversedPrefix);
- } else {
- String updatedPrefix = generateNextString(prefix);
- String updatedReversePrefix = new StringBuilder(updatedPrefix).reverse().toString();
- return Integer.valueOf(updatedPrefix + updatedReversePrefix);
- }
- } else {
- if (reversedPrefix.equals(numStr.substring(len / 2 + 1))) return number;
- char midChar = numStr.charAt(len / 2);
- if (Integer.valueOf(reversedPrefix) > Integer.valueOf(numStr.substring(len / 2 + 1))) {
- return Integer.valueOf(prefix + midChar + reversedPrefix);
- } else {
- String updatedPrefix = generateNextString(prefix + midChar);
- String updatedReversePrefix = new StringBuilder(updatedPrefix.substring(0, updatedPrefix.length() - 1)).reverse().toString();
- return Integer.valueOf(updatedPrefix + updatedReversePrefix);
- }
- }
- }
- private String generateNextString(String s) {
- Integer num = Integer.valueOf(s) + 1;
- return String.valueOf(num);
- }
复制代码 |
|