(LeetCode)反转整数

原题如下:

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

click to show spoilers.

Have you thought about this?

Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!

If the integer‘s last digit is 0, what should the output be? ie, cases such as 10, 100.

Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?

For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

我的实现代码如下:

public class Solution {
    public int reverse(int x) {
		String s = String.valueOf(x);
		if(s.equals("0"))
		{
		    return 0;
		}
		int length = s.length();
		StringBuilder sb;
		if(s.startsWith("-"))
		{
			s = s.substring(1, length);
			sb = new StringBuilder(s);
			sb.reverse();
			while(sb.charAt(0)=='0')
			{
				sb.deleteCharAt(0);
			}
			sb.insert(0, "-");
		}else
		{
			sb = new StringBuilder(s);
			sb.reverse();
			while(sb.charAt(0)=='0')
			{
				sb.deleteCharAt(0);
			}
		}
		if(Long.parseLong(sb.toString())>Integer.MAX_VALUE||Long.parseLong(sb.toString())<Integer.MIN_VALUE)
		{
			return 0;
		}
		return Integer.parseInt(sb.toString());

    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-31 16:09:13

(LeetCode)反转整数的相关文章

leetcode——Reverse Integer 反转整数数字(AC)

Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 这个题比较简单,考虑特殊情况如12000,注意检查反转后数字是否会越界溢出.代码如下: class Solution { public: int reverse(int x) { bool minus = false; short int splitNum[10]; int i = 0, j = 0; unsign

【一起刷LeetCode】整数反转

前言&絮叨 别人都忙着参加年会晒奖品,我却忙着写代码.每逢年底都要安排几个紧急项目,我什么时候能摆脱这种宿命. 在忙也不能忘记刷LeetCode,毛毛向前冲!!! 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[-2 ^ 31, 2 ^ 31 ? 1].请根

关于反转整数

在leetcode上就见了这题: 经典的反转整数,遇见过很多次了,本以为很简单,分分钟码出来,结果却大失所望,哎,看来以后还是得多想想特殊情况呀~~ 不多说,先把坑挖出来,一共两个坑: 1.反转后可能溢出,此时应该返回0: 2.关于尾数为0时,应舍去: 由于采用数学方法获取各位数,并非用文本反转,所以坑2就不用考虑了, 关键是坑1,如何判别溢出呢?可以通过获取INT_MAX和INT_MIN来辅助,由于是乘法溢出,故采用将最值除上相应值,这样避免判断最值情况. 一切尽在代码中: class Sol

【0031】反转整数/判断回文

Reverse Integer 反转一个整数 C++ Code 1234567891011121314151617181920212223242526272829303132   class Solution{public:    int reverse(int x)    {        /*一位数的情况*/        if(-10 < x && x < 10)        {            return x;        } /*记录负数情况,负数转换成正

leetcode 343. 整数拆分:动态规划(c++)

leetcode 343. 整数拆分 分析 状态表示: · dp[i] 表示整数 i 拆分乘积的最大值. 转移方程: · 对于每个数字 i 都进行一遍循环,计算 (i - j) * j,(j <= i - 1),并求其与 dp[i],dp[i - j] * j 的最大值,即:dp[i] = max(dp[i],(i - j) * j,dp[i - j] * j) · 与 dp[i - j] * j 比较是因为 i - j 可能小于 i - j 拆分的乘积. 边界: · 输入的整数 n 大于等于

Leetcode 7. 整数反转(ing)

1.题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1].请根据这个假设,如果反转后整数溢出那么就返回 0. 2.<limits>头文件 //宏定义 #define INT_MAX 2147483647 #define IN

leetcode刷题日记——反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转. 这里考虑,交换时,需要注意位数不同,需要乘上对应的位数,代码如下: int reverse(int x) { int result = 0; while(x != 0) { int tmp = result * 10 + x % 10; //转换的中间值 x = x / 10; //每循环一次,x位数减少一位 if(tmp / 10 != result) //验证数据是否正确 { result = 0; break; } result =

LeetCode刷题-007反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转.示例 1:输入 : 123输出 : 321示例 2:输入 : ‐123输出 : ‐321示例 3:输入 : 120输出 : 21注意 :假设我们的环境只能存储 32 位有符号整数,其数值范围是 [?2 31 , 2 31 ? 1].根据这个假设,如果反转后的整数溢出,则返回 0. 1 class Solution { 2 public: 3 int reverse(int x) { 4 const int int_max=0x7fffffff

Leetcode 7 反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [?231,  231 ? 1].根据这个假设,如果反转后的整数溢出,则返回 0. 解答: class Solution: def reverse(self, x): """ :type x: int :rtype: int