Leetcode 7 Reverse Integer 反转数字

题目:

Reverse digits of an integer.

Example1: x =
123, return 321

Example2: x = -123, return -321

翻译就是把一个数字反过来输出。

解题思路:这道题目看起来比较简单。无非就是一个数字取个位,作为另一个高位。无非是在10的运算。

代码1:

 public static int reverse2(int x)
	 {
		 int rev = 0;
		 boolean flag = false;//正负数
		 if(x < 0)
		 {
			 x = 0 -x;
			 flag = true;
		 }

		 while(x > 0)
		 {
			 rev = x %10 +rev *10;
			 x = x/10;
		 }
		 if(flag)
		 {
			 rev = 0 -rev;
		 }

		 return rev;
	 }

这个是我初始想到的代码。提交上去后,题目给了个数为1534236469,结果最后结果跑出来是1056389759。后来想想是溢出的问题。

因为java的Integer.MAX_VAVLUE
2e31-1,MIN_VALUE -2e31。

即在快要到边界的时候乘以10 便会出现溢出的问题。

因此加上判断条件

if (rev != 0 && Integer.MAX_VALUE / rev < 10)
	               return 0;

最后整合下代码,最终版本为

代码2:

   	  public static int reverse(int x) {
		 int rev = 0;
		 while(x!=0)
		 {
			 if (rev != 0 && Integer.MAX_VALUE / rev < 10
	                   && Integer.MAX_VALUE / rev > -10)
	               return 0;
			 rev = rev*10 + x%10;
			 x = x/10;
		 }

		 return rev;
	    }
时间: 2024-10-28 11:13:34

Leetcode 7 Reverse Integer 反转数字的相关文章

LeetCode:Reverse Integer - 翻转数字

1.题目名称 Reverse Integer(翻转数字) 2.题目地址 https://leetcode.com/problems/reverse-integer/ 3.题目内容 英文:Reverse digits of an integer. 中文:翻转一个正整数的各位,形成一个新数字 例如:x = 123, return 321:x = -123, return -321 4.一个有瑕疵的方法(不能AC) 一个比较好想到的方法,是先将输入的数字转换为字符串,再将字符串翻转后转换为数字.这个方

[leetcode]7. Reverse Integer反转整数

Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 题意: 给定一个10进制整数,翻转它. Solution1: directly do the simulation. Two tricky parts to be hand

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 007 Reverse Integer

[题目] Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 [题意] 反转int型整数,输出的也是int型的整数 [思路] 如要考虑两种特殊情况: 1. 类似100这样的整数翻转之后为1 2. 翻转之后的值溢出该如何处理, 本题的测试用例中似乎没有给出溢出的情况 在实际面试时需要跟面试官明确这种情况的处理方法. 基于这点事实,本题规定如果超出正边界返回INT_MA

Leetcode 数 Reverse Integer

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Reverse Integer Total Accepted: 17472 Total Submissions: 43938 Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 click to show spoilers. Have you thought

【LeetCode】Reverse Integer (2 solutions)

Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: 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 alread

LeetCode 7 Reverse Integer(反转数字)

题目来源:https://leetcode.com/problems/reverse-integer/ Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 解题思路: 其实这道题看起来非常简单,要实现也是几行代码的事.但是有个小问题容易被忽略,就是边界问题.什么意思呢?如果我们输入的整数超出了int的表达范围,这个问题要怎么解决呢? 用比int更大的数据类型存储我们转

leetcode 7. Reverse Integer

https://leetcode.com/problems/reverse-integer/ 题目:反转数字. 例如: 输入 -321 输出 -123 思路:题目比较简单,主要是主要32位数字溢出的情况.当反正后数字溢出则输出0. 这里用long型记录反转后的数字,然后强制转换为int型,如果转换后不相等则说明数字溢出了. 1 class Solution { 2 public: 3 int reverse(int x) { 4 int flag=0; 5 if(x<0){ 6 flag=1;

[LeetCode][JavaScript]Reverse Integer

Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: 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 alread