题解 | #整数反转#
整数反转
http://www.nowcoder.com/practice/6d366d8d3d5941729c5d3fdab55e02d1
C++解题:
1.首先确定如何对整数反转?我们可以先获取这个整数的每一位的数字,然后进行反序存储:例如100,这个数字只有三位数,分别是个位、十位、百位,所以我们可以先获取到个位、十位、百位上的数字,然后将个位上的数字放到百位上(即将原本整数的各位上的数字乘以100即可),而百位上的数字则放到个位上,十位上的数字不变。
2.定义一个long型整数res存储整数反转后的结果,注意:题目要求不能用long long型,但是long代表的是long int型,即长整型,所以可以使用;并且初始化res=0;由于不知道整数的位数,所以使用循环,循环条件是整数大于0;通过来获取整数的最后一位的数字并赋值给a;每次获取后,将整数除以10,并且res也要乘以10再加上求得的数字a。
3.分类思考:1.整数大于0和小于0;2.整数是否超过2^31-1或者小于-2^31,如果是,则直接返回0;
以下是我的代码,有改进的地方或者好的建议请指出,我将积极改进:
class Solution {
public:/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型
* @return int整型
*/
int reverse(int num) {
long res = 0;
if(num>0){
while(num>0){
int a = num % 10;
num /= 10;
if(a!=0) res = res * 10 + a;
}
if(res>2147483647)return 0;
return res;
}
num = -num;
while(num>0){
int a = num % 10;
num /= 10;
if(a!=0)res = res * 10 + a;
}
if(res>2147483647)return 0;
return -res;
}
};