【LeetCode】9、回文数
一、数学: 除法和取模
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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |