- 题目:
https://leetcode.cn/problems/reverse-integer/ - 思路:
Rust标准库实现了String对数字的转换。所以整个代码非常简单:
- 首先判断x是否小于0,如果小于0,则需要单独处理负号。
- 所以我们首先对x打印成字符串,并反转。当x<0时,将反转后的字符串中尾部的“符号”,插入到字符头。
- 最后调用系统的parser解析函数,并对解析失败的情况(即数字范围在i32之外的情况)使用or函数转换为默认的Ok(0).最后unwrap并返回。
- 示例代码:
impl Solution {
pub fn reverse(x: i32) -> i32 {
let mut a = format!("{}", x).chars().rev().collect::<String>();
if x < 0 { a.pop(); a.insert(0, '-')}
return a.parse::<i32>().unwrap_or(0i32);
}
}
执行结果: 通过 显示详情 添加备注
执行用时: 0 ms , 在所有 Rust 提交中击败了 100.00% 的用户
内存消耗: 2 MB , 在所有 Rust 提交中击败了 60.13% 的用户
通过测试用例:
1032 / 1032
看了一下大佬的代码:
impl Solution {
pub fn reverse(x: i32) -> i32 {
x.abs()
.to_string()
.chars().rev()
.collect::<String>()
.parse::<i32>()
.unwrap_or(0) * x.signum()
}
}
作者:arstman
链接:https://leetcode.cn/problems/reverse-integer/solution/shan-yu-li-yong-biao-zhun-ku-yi-xing-dai-ma-jie-ju/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
可能这就是差距吧