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
}

执行结果如下:


左神java代码

2022-02-17:寻找最近的回文数。 给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输的更多相关文章

  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 ...

  2. Leetcode 564.寻找最近的回文数

    寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123" 输出 ...

  3. Java实现 LeetCode 564 寻找最近的回文数(今天要GG在这道题了 头晕+题难(((φ(◎ロ◎;)φ))))

    564. 寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123&quo ...

  4. [Swift]LeetCode564. 寻找最近的回文数 | Find the Closest Palindrome

    Given an integer n, find the closest integer (not including itself), which is a palindrome. The 'clo ...

  5. 第三周PTA笔记 回文数+A-B(大数减法)+高精度除法+数楼梯(大数加法)

    回文数 对于一个自然数n,若将n的各位数字反向排列所得的数n1与n相等,则称n为回文数,例如2332. 若给定一个N( 2<=N<=16)进制数M(M的长度在一百位以内),如果M不是回文数 ...

  6. C语言实现计算双基回文数详解

    双基回文数的定义: 如果一个正整数n至少在两个不同的进位制(二进制<=进制=<十进制)b1和b2下都是回文数,则称n是双基回文数. 根据定义,简单的说就是在二进制到十进制之间(包括十进制和 ...

  7. PAT 1079. 延迟的回文数

    PAT 1079. 延迟的回文数 给定一个 k+1 位的正整数 N,写成 ak...a1a0 的形式,其中对所有 i 有 0 <= ai < 10 且 ak > 0.N 被称为一个回 ...

  8. POJ 2402 Palindrome Numbers(LA 2889) 回文数

    POJ:http://poj.org/problem?id=2402 LA:https://icpcarchive.ecs.baylor.edu/index.php?option=com_online ...

  9. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  10. java实现第六届蓝桥杯生成回文数

    生成回文数 所谓回文数就是左右对称的数字,比如: 585,5885,123321- 当然,单个的数字也可以算作是对称的. 小明发现了一种生成回文数的方法: 比如,取数字19,把它与自己的翻转数相加: ...

随机推荐

  1. ADOStoredProc动态调用存储过程

    有些用ADOStoredProc进行操作时,要动态创建输入输出参数,一定要用 ADOStoredProc1.Parameters.Refresh;将参数进行刷新一下.

  2. Winform 使用DotNetBar 设置界面为Office2007 样式

    public partial class FrmMain : DevComponents.DotNetBar.Office2007RibbonForm { public FrmMain() { Ini ...

  3. leetcode-1072 Flip Columns For Maximum Number of Equal Rows

    Given a matrix consisting of 0s and 1s, we may choose any number of columns in the matrix and flip e ...

  4. DVWA-SQL Injection(SQL注入)

    sql注入是典型.常见的Web漏洞之一,现在在网络中也可能存在,不过大多数为SQL盲注. 攻击者通过恶意的SQL语句来破坏SQL查询语句,达到数据库泄露的目的 LOW 审计源码 <?php // ...

  5. mybatis-plus #和$的使用场景

    #防止sql注入,但是会把里面的内容默认为是字符串 $使用场景:如果条件查询要加入数据权限判断,那么久需要使用$符号而不是#符号

  6. JOI 简单题选做

    就是把洛谷上评分为紫的题做了一下(汗) 前两道题没做出来,暴露了自己在 dp 上的短板. イベント巡り 2 一开始想到贪心,但发现我们只要选 \(k\) 个即可,所以可以尝试一些更劣但是编号更小的做法 ...

  7. 《golong入门教程📚》,从零开始入门❤️(建议收藏⭐️)

    Go语言学习笔记 本菜鸟的Go语言学习笔记,历时1个月,包含了Go语言大部分的基本语法(不敢说全部),学习期间参考了各种视频,阅读了各种文章,主要参考名单如下: 点击跳转到参考名单<( ̄︶ ̄)& ...

  8. Google Protobuf 编解码

    更多内容,前往个人博客 Protobuf 全称:Google Protocol Buffers,由谷歌开源而来,经谷歌内部测试使用.它将数据结构以 .proto 文件进行描述,通过代码生成工具可以生成 ...

  9. SQL Server修改sa用户密码

     SQL Server数据库使用windows用户登录,安全性->登录名->找到sa用户->属性: 可直接修改sa用户密码(可去掉勾选强制实施密码策略)

  10. 浅学git工具

    1.git工具介绍及使用 git工具直接安装: 直接运行exe文件进行安装,按默认的操作点击下一步就行了 校验: 在DOS命令行中输入:git  --version 如果能正常显示出对应的版本就是ok ...