2022-02-17:寻找最近的回文数。 给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输
Posted 福大大架构师每日一题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-02-17:寻找最近的回文数。 给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输相关的知识,希望对你有一定的参考价值。
2022-02-17:寻找最近的回文数。
给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。
“最近的”定义为两个整数差的绝对值最小。
示例 1:
输入: n = “123”;
输出: “121”。
力扣564。
答案2022-02-17:
粗回文,中间位置加1或减1或不变。coding难点在进位和借位。
代码用golang编写。代码如下:
package main
import (
"fmt"
"strconv"
)
func main()
n := "123"
ret := nearestPalindromic(n)
fmt.Println(ret)
func nearestPalindromic(n string) string
num, _ := strconv.Atoi(n)
raw := getRawPalindrome(num)
big := 0
if raw > num
big = raw
else
big = getBigPalindrome(raw)
small := 0
if raw < num
small = raw
else
small = getSmallPalindrome(raw)
if big-num >= num-small
return fmt.Sprint(small)
else
return fmt.Sprint(big)
func getRawPalindrome(n int) int
chs := []byte(fmt.Sprint(n))
len0 := len(chs)
for i := 0; i < len0/2; i++
chs[len0-1-i] = chs[i]
ret, _ := strconv.Atoi(string(chs))
return ret
func getBigPalindrome(raw int) int
chs := []byte(fmt.Sprint(raw))
res := make([]byte, len(chs)+1)
res[0] = '0'
for i := 0; i < len(chs); i++
res[i+1] = chs[i]
size := len(chs)
for j := (size-1)/2 + 1; j >= 0; j--
res[j]++
if res[j] > '9'
res[j] = '0'
else
break
offset := 0
if res[0] == '1'
offset = 1
size = len(res)
for i := size - 1; i >= (size+offset)/2; i--
res[i] = res[size-i-offset]
ret, _ := strconv.Atoi(string(res))
return ret
func getSmallPalindrome(raw int) int
chs := []byte(fmt.Sprint(raw))
res := make([]byte, len(chs))
size := len(res)
for i := 0; i < size; i++
res[i] = chs[i]
for j := (size - 1) / 2; j >= 0; j--
res[j]--
if res[j] < '0'
res[j] = '9'
else
break
if res[0] == '0'
res = make([]byte, size-1)
for i := 0; i < len(res); i++
res[i] = '9'
if size == 1
return 0
else
ret, _ := strconv.Atoi(string(res))
return ret
for k := 0; k < size/2; k++
res[size-1-k] = res[k]
ret, _ := strconv.Atoi(string(res))
return ret
执行结果如下:
以上是关于2022-02-17:寻找最近的回文数。 给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输的主要内容,如果未能解决你的问题,请参考以下文章