1 题目描述
Given a 32-bit signed integer, reverse digits of an integer.
难度:Easy
2 题目样例
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
3 题目分析
很简单的翻转整数问题…一般说来,学习计算机学科的学生,在大一就会接触到与之类似的题目。
一般说来,处理字符串和处理整数都是可行的方案。
但是由于这道题目的Note里明确的提到了这样一点:如果溢出,就直接return 0。
所以不要想着用字符串解决问题啦,老老实实地写整数处理就好了。
4 思路分析
思路是十分明确的,利用除法和取模操作,把每一位都取出来,然后再计算回去就好。
代码实现如下:
class Solution
{
public:
int reverse(int x)
{
long long temp=0;
while(x!=0)
{
temp=10*temp+x%10;
x/=10;
}
if(temp>INT_MAX || temp<INT_MIN)
return 0;
else
return temp;
}
};
既然题目中已经很明确的表示了,所输入的只是一个32位的整数,那么我完全可以用一个long long类型的数字进行存储,这样就不需要担心所声明的long long溢出的问题了。
最后进行一下判断即可。
不要忘记把你声明的变量进行初始化啊!!
5 后记
这可能是本专栏文章中最简短的一篇了吧…我相信这个”最短”的记录,可以保持很久很久。