千问 LeetCode 7.整形反转 Rust实现

📅 2026/8/27 20:59:14
千问    LeetCode 7.整形反转 Rust实现
LeetCode 7「整数反转」的 Rust 实现如下核心思路每次从 x 的末尾取出一位数字x % 10拼接到结果 rev 的末尾rev * 10 digit直到 x 变为 0。难点在于溢出判断题目要求不能使用 64 位整数因此必须在 rev * 10 digit 执行之前预判是否会超出 i32 的范围 [-2^31, 2^31 - 1]- 正数溢出rev i32::MAX / 10或 rev i32::MAX / 10 且末位 digit 7因为 i32::MAX 2147483647- 负数溢出rev i32::MIN / 10或 rev i32::MIN / 10 且末位 digit -8因为 i32::MIN -2147483648代码实现impl Solution {pub fn reverse(x: i32) - i32 {let mut num x;let mut rev 0;while num ! 0 {let digit num % 10;num / 10;// 正数溢出检查if rev i32::MAX / 10 || (rev i32::MAX / 10 digit 7) {return 0;}// 负数溢出检查if rev i32::MIN / 10 || (rev i32::MIN / 10 digit -8) {return 0;}rev rev * 10 digit;}rev}}复杂度分析项目 复杂度 说明时间 O(log x ) 循环次数等于 x 的位数空间 O(1) 仅使用常数级变量运行示例输入 过程 输出123 3 → 32 → 321 321-123 -3 → -32 → -321 -321120 0 → 02 → 021 21 211534236469 反转后超出 i32 范围 0关键点说明要点 说明溢出预判 在 rev * 10 digit 之前检查避免实际溢出负数取模 Rust 中 -123 % 10 -3符号跟随被除数天然兼容负数处理边界值 7 和 -8 来自 i32::MAX 末位 7 和 i32::MIN 末位 -8无需处理符号 正负数的取模和除法行为一致统一逻辑即可需要我再给你一版 Python 实现吗可以对比一下 Rust 和 Python 处理这道题的写法差异。