三行搞定Rust LeetCode整数反转

  1. 题目:
    https://leetcode.cn/problems/reverse-integer/
  2. 思路:
    Rust标准库实现了String对数字的转换。所以整个代码非常简单:
  • 首先判断x是否小于0,如果小于0,则需要单独处理负号。
  • 所以我们首先对x打印成字符串,并反转。当x<0时,将反转后的字符串中尾部的“符号”,插入到字符头。
  • 最后调用系统的parser解析函数,并对解析失败的情况(即数字范围在i32之外的情况)使用or函数转换为默认的Ok(0).最后unwrap并返回。
  1. 示例代码:
impl Solution {
    pub fn reverse(x: i32) -> i32 {
        let mut a = format!("{}", x).chars().rev().collect::();
        if x < 0 { a.pop(); a.insert(0, '-')}
        return a.parse::().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::()
        .parse::()
        .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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

可能这就是差距吧

你可能感兴趣的:(三行搞定Rust LeetCode整数反转)