莱莱 发表于 2024-12-23 10:47:36

【LeetCode】9、回文数

【LeetCode】9、回文数


https://i-blog.csdnimg.cn/direct/56b4e9986f8d4099842e51847de9ba56.png
一、数学: 除法和取模

1.1 数学: 除法和取模

比方 15251, offset 也是五位数的 10000
先判定首1和尾1, 再变为 525, offset 变为 100
再判定首5和尾5, 再变为 2, offset 变为 1
整个过程若都符合, 则符合回文数
此中, 过程中需借助 offset 完成


[*]比方 15251, 则 offset 为 10000
[*]比方 152251, 则 offset 为 100000
// go
func isPalindrome(x int) bool {
    if x < 0 {return false} // 负数肯定不是回文数

    offset := 1
    // x = 15251, offset = 1
    // x = 15251, offset = 10
    // x = 15251, offset = 100
    // x = 15251, offset = 1000
    // x = 15251, offset = 10000, for 循环不满足, 跳出循环, offset 变为 10000
    for (x / offset >= 10) {
      offset *= 10
    }

    for x != 0 {
      if x/offset != x%10 { // 首位是 x/offset, 末尾是 x%10, 如 15251 的首1和尾1
            return false
      }
      x = (x % offset) / 10 // 移除x 的首位和尾位, 如 15251 变为 525
      offset /= 100 // 使 offset 再次和 x 的位数对齐, 即移除两位, 如 10000 变为 100
    }
    return true
}
参考 左神视频 超级回文数 中的一个步骤: 详见视频第1h处
二、多语言解法

                                    C                         p                         p                         /                         G                         o                         /                         P                         y                         t                         h                         o                         n                         /                         R                         u                         s                         t                         /                         J                         s                         /                         T                         s                              Cpp/Go/Python/Rust/Js/Ts                  Cpp/Go/Python/Rust/Js/Ts
// cpp
// go 同上
# python
// rust
// js
// ts

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【LeetCode】9、回文数