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: 输的更多相关文章
- 数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小,数组中的数的取值范围是0<x<100,元素个数也是大于0, 小于100 。
比如a[]={2,4,5,6,7},得出的两组数{2,4,6}和{5,7},abs(sum(a1)-sum(a2))=0: 比如{2,5,6,10},abs(sum(2,10)-sum(5,6))=1 ...
- Leetcode 564.寻找最近的回文数
寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123" 输出 ...
- Java实现 LeetCode 564 寻找最近的回文数(今天要GG在这道题了 头晕+题难(((φ(◎ロ◎;)φ))))
564. 寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123&quo ...
- [Swift]LeetCode564. 寻找最近的回文数 | Find the Closest Palindrome
Given an integer n, find the closest integer (not including itself), which is a palindrome. The 'clo ...
- 第三周PTA笔记 回文数+A-B(大数减法)+高精度除法+数楼梯(大数加法)
回文数 对于一个自然数n,若将n的各位数字反向排列所得的数n1与n相等,则称n为回文数,例如2332. 若给定一个N( 2<=N<=16)进制数M(M的长度在一百位以内),如果M不是回文数 ...
- C语言实现计算双基回文数详解
双基回文数的定义: 如果一个正整数n至少在两个不同的进位制(二进制<=进制=<十进制)b1和b2下都是回文数,则称n是双基回文数. 根据定义,简单的说就是在二进制到十进制之间(包括十进制和 ...
- PAT 1079. 延迟的回文数
PAT 1079. 延迟的回文数 给定一个 k+1 位的正整数 N,写成 ak...a1a0 的形式,其中对所有 i 有 0 <= ai < 10 且 ak > 0.N 被称为一个回 ...
- POJ 2402 Palindrome Numbers(LA 2889) 回文数
POJ:http://poj.org/problem?id=2402 LA:https://icpcarchive.ecs.baylor.edu/index.php?option=com_online ...
- c语言求回文数的三种算法的描述
c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...
- java实现第六届蓝桥杯生成回文数
生成回文数 所谓回文数就是左右对称的数字,比如: 585,5885,123321- 当然,单个的数字也可以算作是对称的. 小明发现了一种生成回文数的方法: 比如,取数字19,把它与自己的翻转数相加: ...
随机推荐
- mitmproxy截取流量和抓包
mitmproxy介绍https://blog.csdn.net/enemy_sprites/article/details/104052506 mitmproxy处理请求及乱码https://blo ...
- 通过k8s部署服务
一 使用docker运行fastapi程序(python封装http接口) 一 docker commit 1 下载python3的镜像 docker pull python:3.8-slim # s ...
- 【c语言】整数拆分
将一个正整数n拆分成若干个正整数的和(至少两个数,n<=100). 输入格式: 一个正整数n 输出格式: 若干行,每行一个等式(数与数之间要求非降序排列).最后一行给出解的总个数 输入样例: 在 ...
- Win10安装curl
参看博客:https://blog.csdn.net/qq_37289115/article/details/106665123
- DevOps|研发效能不是老板工程,是开发者服务
有人说研发效能是老板工程.不是的,研发效能不是老板工程,它不直接服务于老板(虽然老板可能看一些报表),反而是服务于广大产研运(产品+研发+质量+运维)的同学,所以有的公司也把研发效能叫做基础中台,平台 ...
- MyBatisPlus 整合 SpringBoot 遇见的问题(一)
[异常]:UnsatisfiedDependencyException: Error creating bean with name 'xxx[类]': Unsatisfied dependency ...
- Nacos 服务发现
更多内容,前往 IT-BLOG 一.Nacos 简介 Nacos 是阿里的一个开源产品,它是针对微服务架构中的服务发现.配置管理.服务治理的综合型解决方案.Nacos 使服务更容易注册,并通过 DNS ...
- 实现一个CRDT工具库——PSet
PSet 这段代码实现了一个PSet,即Positive Set,是GSet的扩展.PSet是一个集合,支持添加和删除元素,但是不支持重复元素.PSet的实现是通过两个GSet来实现的,一个GSet存 ...
- THM-被动侦察和主动侦查
被动与主动侦察 在计算机系统和网络出现之前,孙子兵法在孙子兵法中教导说:"知己知彼,必胜不疑." 如果您扮演攻击者的角色,则需要收集有关目标系统的信息.如果你扮演防御者的角色,你需 ...
- 基于docker和cri-dockerd部署k8sv1.26.3
cri-dockerd是什么? 在 Kubernetes v1.24 及更早版本中,我们使用docker作为容器引擎在k8s上使用时,依赖一个dockershim的内置k8s组件:k8s v1.24发 ...