您的位置:首页 > 其它

LeetCode Reverse Integer

2017-11-29 23:06 190 查看
问题网址:https://leetcode.com/problems/longest-palindromic-substring/description/

问题描述:

给定一个32位有符号整数,整数的反转数字。

问题样例:

Example 1:

Input: 123
Output:  321


Example 2:

Input: -123
Output: -321


Example 3:

Input: 120
Output: 21


注意:

假设我们正在处理一个只能保持32位有符号整数范围内的整数的环境。 出于这个问题的目的,假设你的函数在反向整数溢出时返回0。

一个简单想法:

int reverse(int x) {
stringstream ss;
string s;
string retVal;
int val;
ss << x;
ss >> s;
for (int i = s.size() - 1; s[i] == '0' && i >= 1; i--) {
s.pop_back();
}
if (s[0] == '-') {
retVal = '-';
for (int i = s.size() - 1; i > 0; i--) {
retVal += s[i];
}
}
else {
for (int i = s.size() - 1; i >= 0; i--) {
retVal += s[i];
}
}
ss.clear();
ss << retVal;
ss >> val;
if (val >= INT_MAX || val <= INT_MIN)
val = 0;
return val;
}


时间复杂度:O(n)

下面给出更快的,也是更简洁的一种处理。

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: