文章目录
- [一、数学: 除法和取模](#一、数学: 除法和取模)
-
- [1.1 数学: 除法和取模](#1.1 数学: 除法和取模)
- 二、多语言解法
一、数学: 除法和取模
1.1 数学: 除法和取模
例如 15251, offset 也是五位数的 10000
先判断首1和尾1, 再变为 525, offset 变为 100
再判断首5和尾5, 再变为 2, offset 变为 1
整个过程若都符合, 则符合回文数
其中, 过程中需借助 offset 完成
- 例如 15251, 则 offset 为 10000
- 例如 152251, 则 offset 为 100000
go
// 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
// cpp
go
// go 同上
python
# python
rust
// rust
js
// js
ts
// ts