您的位置:首页 > 理论基础 > 数据结构算法

<LeetCode OJ> 7. Reverse Integer

2015-12-18 22:22 393 查看
题目翻译:

将数字逆置

Example1: x = 123, return 321

Example2: x = -123, return -321

分析:DONE

思路首选:要先知道数的正负,正数直接反,负数先变成正数再反(增加一个flag记录是否为负数)

正数具体反过程---------先一位一位的个位取出来(他是新数的最高位,循环一次*10),取了之后再将这个数缩小10倍(取整)重复如此操作,同时,题目需要溢出处理,因为反过来后可能越界。

空间复杂度为O(N),时间复杂度为O(1),N为位数

class Solution {
public:
int reverse(int x) {
bool flag=true;
if(x < 0)
{
flag=false;
x*=-1;
}
long long result=0;
while(x)
{
result=result*10+x%10;
x/=10;
}
if(!flag)
result*=-1;
//溢出判断
return (result>INT_MAX || result<INT_MIN )?0:result;
}
};


别人的简洁算法:

class Solution {
public:
int reverse(int x) {
long long res = 0;
while(x) {
res = res*10 + x%10;
x /= 10;
}
return (res<INT_MIN || res>INT_MAX) ? 0 : res;
}
};


注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/50354544

原作者博客:http://blog.csdn.net/ebowtang
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息