当前位置: 首页 > news >正文

9. 回文数

9. 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。

 

示例 1:

输入:x = 121
输出:true

示例 2:

输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。

 

提示:

  • -231 <= x <= 231 - 1

 

进阶:你能不将整数转为字符串来解决这个问题吗?


def is_k_palindrome(x: int, k: int) -> bool:# 在以 k 为基数的表示中,如果 x 能被 k 整除,那么其 k 进制表示的最后一位是 0。而回文数字通常不允许以 0 开头(除非是 0 本身),因此这是一个快速排除的条件。if x % k == 0:return False# 用来构建 x 在 k 进制下的反向数字rev = 0# x // k 是 x 除以 k 的整数部分,相当于去掉 x 在 k 进制下的最后一位# 当 rev 构建的反向数字还没有达到或超过 x 去掉最后一位的数字时,继续循环。while rev < x // k:# x % k 是 x 在 k 进制下的最后一位数字。# rev * k 将 rev 左移一位(在 k 进制下),然后加上 x 的最后一位。# 这相当于将 x 的数字从低位到高位依次取出,构建其反向的数字。rev = rev * k + x % k# 相当于将 x 右移一位(在 k 进制下)x //= k# 这样,每次循环中:# 取出 x 的最后一位(x % k),加到 rev 的后面。# 去掉 x 的最后一位(x = x // k)。return rev == x or rev == x // k
# 如果 x 在 k 进制下是回文,那么在构建 rev 的过程中,rev 会逐步等于 x 的前半部分。对于偶数长度的回文,rev 会等于 x 的前半部分;对于奇数长度的回文,rev 会等于 x 去掉中间数字后的前半部分。# 例如:# 偶数长度:x 的 k 进制表示为 abba,rev 构建为 ab,x 逐步变为 ab,最后 rev == x。
# 奇数长度:x 的 k 进制表示为 abcba,rev 构建为 ab,x 逐步变为 a,最后 rev == x * k + b(可能需要 rev == x // k 来匹配)。

 

 

相关文章:

  • linux网络编程socket套接字
  • 与 AI 聊天更顺畅:cat_code.py
  • MySQL5.7和8.0 破解root密码
  • C++ STL ——string的使用讲解及其底层实现
  • react-嵌套路由 二级路由
  • 128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
  • Spring Cloud Config动态刷新实战指南
  • CyberGlove触觉反馈手套遥操作机器人灵巧手解决方案
  • java中的anyMatch和allMatch方法
  • [3D-portfolio] 版块包装高阶组件(封装到HOC) | Email表单逻辑 | 链式调用
  • 【Electron】electron+react的插件@electron/remote用法,在渲染进程直接调用主进程的API
  • 码蹄集:MT2045斐波那契,但是是字符串
  • Java设计模式->责任链模式的介绍
  • Java 编程之备忘录模式
  • SQL学习笔记3
  • LeetCode--37.解数独
  • 使用 Nordic Connect SDK (NCS) 而不是标准 Zephyr 的优势是什么
  • AI+时代已至|AI人才到底该如何培育?
  • ubuntu部署woodpecker依赖gitea
  • 6月26日星期四今日早报简报微语报早读