码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_26题——Reverse Integer(int型的表示范围)

时间:2015-05-26 15:58:48      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

Reverse Integer

 Total Accepted: 73207 Total Submissions: 281775My Submissions

 

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

click to show spoilers.

 

Hide Tags
 Math
Have you met this question in a real interview? 
Yes
 
No
 
      这道题主要的考察点在于int型数据的考察范围,int型,4个字节,更32位,在这里是有符号位的,所以表示范围为-2^31到+2^31-1的范围内
#include<iostream>
#include<math.h>
using namespace std;

int reverse(int x) 
{
	if(x>=0)
	{
		int a=x;
		int b=a/10;
		int c=a%10;
		int last_result=c;
		while(b!=0)
		{
			if(last_result>2147483647/10)
				return 0;
			last_result*=10;
			c=b%10;
			b=b/10;
			if(last_result>2147483647-c)
				return 0;
			last_result+=c;
		}
		return last_result;
	}
	else
	{
		int a=abs(x);
		int b=a/10;
		int c=a%10;
		int last_result=c;
		while(b!=0)
		{
			if(last_result>2147483647/10)//(2^31-1)/10
				return 0;
			last_result*=10;
			c=b%10;
			b=b/10;
			if(last_result>2147483647-c)//2^31-1-c
				return 0;
			last_result+=c;
		}
		return -last_result;
	}
}
int main()
{
	//int x=1534236469;
	//int x=-2147483648;
	//int x=1563847412;
	int x=-2147483412;
	cout<<reverse(x)<<endl;
	/*
	long int a=964632435;
	long int c=9646324351;
	long int b=a*10;
	cout<<a<<‘ ‘<<b<<‘ ‘<<c<<endl;*/
}

  

leetcode_26题——Reverse Integer(int型的表示范围)

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4530617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!