首页 > 学院 > 开发设计 > 正文

LeetCode-7. Reverse Integer

2019-11-11 05:02:16
字体:
来源:转载
供稿:网友

1.题目描述

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

Note:

The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

2.我的分析思路

我之前的想法是将数字首先判断数字是正数还是负数,然后走不同的分支。接着将数字转换为字符串,然后将字符串倒序输出。

这个想法感觉没啥问题,但是实施起来的时候遇到了一些问题。字符串倒序输出,转换成char数组,然后倒序访问char数组,放到新的数组中。然后再拼接成字符串,然后将字符串转换为数字。

实现起来比较麻烦,然而并没有想到其他的好的实现方法。

3.其他的思路

看大家的讨论内容,发现了一个比较精妙的实现方法,现分享给大家。

public static int reverse(int x) throws Exception { if (x > Integer.MAX_VALUE || x < Integer.MIN_VALUE) { return 0; } int revNum = 0; int digit = 0; // 关键也就是这三行的代码 while (x != 0) { digit = x % 10; revNum = digit + revNum * 10; x /= 10; } return revNum;}

这个算法的精妙之处,可以debug查看。每次获取到数字的个位数,然后接着将这个个位数乘以10之后,加上新的个位数。如此循环,即可得到倒序输出的数字。

妙哉!妙哉!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表