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. 为什么 Go 语言 struct 要使用 tags

    原文链接:为什么 Go 语言 struct 要使用 tags 在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构.在 struct 中,我们可以定义多个字段,每个字段可 ...

  2. JavaWeb笔记第一弹

    一.MYSQL的安装 1.MYSQL的安装 可以去官网找到与自身计算机向对应的版本进行下载 网址如下: MySQL :: Download MySQL Community Server 2.MYSQL ...

  3. something to SSSSay

    可能记录写博客的初衷,现在的状态,一些目标.想法. 首先让我拟定几个关键词: 半吊子程序员 咸鱼 欲求不满 终生学习 自律 <差不多程序员> 长得差不多(175)高,看着差不多(普通)帅, ...

  4. Cesium 后处理(Post Process)

    原文地址:https://blog.csdn.net/ls870061011/article/details/123910821 作者:GIS李胜 为实现三维模型的更炫.更酷.更美观,Cesium在1 ...

  5. 使用 DeepSpeed 和 Hugging Face 🤗 Transformer 微调 FLAN-T5 XL/XXL

    Scaling Instruction-Finetuned Language Models 论文发布了 FLAN-T5 模型,它是 T5 模型的增强版.FLAN-T5 由很多各种各样的任务微调而得,因 ...

  6. 一款针对EF Core轻量级分表分库、读写分离的开源项目

    在项目开发中,如果数据量比较大,比如日志记录,我们往往会采用分表分库的方案:为了提升性能,把数据库查询与更新操作分开,这时候就要采用读写分离的方案. 分表分库通常包含垂直分库.垂直分表.水平分库和水平 ...

  7. python内置模块之ctype

    ctypes --- Python 的外部函数库¶ ctypes 是 Python 的外部函数库.它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数.可使用该模块以纯 Python ...

  8. window远程桌面之通过修改端口链接

      windows开启及连接远程桌面 技术标签: 后端开发  windows         桌面 -> 此电脑 图标右键 -> 属性 远程设置 远程桌面 -> 修改为允许远程连接到 ...

  9. Python 明明安装了Crypto模,但报错No module named “Crypto“

    安装网上的解决方法卸载:pip uninstall cryptopip uninstall pycryptodomepip uninstall pycrypto重装:pip install Crypt ...

  10. YOLO精讲------YOLOV1

    CV小白说YOLOV1 题外话: 目标检测是什么? 它是在图像中对一类或多类感兴趣的目标进行查找和分类,确定它们的类别和位置.由于各类物体有不同的外观.形状和姿态,加上成像时各种因素的干扰,目标检测一 ...