您的位置:首页 > 编程语言 > Go语言

[LeetCode] Reverse Integer 解题报告

2016-10-12 10:05 423 查看
—— write for my baby, mua


[题目]

Reverse digits of an integer.

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

[中文翻译]

将整数的数字反向。

例子1: x = 123, 返回 321
例子2: x = -123, 返回 -321

[解题思路]

O(K) K为数字的长度

首先将num的符号提取出来,将num转换为一个正数。

然后将num转换为字符串,将字符串反转之后再转换为数字res。

将符号和res结合后返回。

[C++代码]

class Solution {
public:
int reverse(int x) {
int sign = 1;

if (x < 0) {
x = -x;
sign = -1;
}

stringstream ss;
string s;

ss << x;
ss >> s;

int l = 0, r = s.size() - 1;
char tmp;

while (l < r) {
tmp = s.at(l);
s.at(l++) = s.at(r);
s.at(r--) = tmp;
}

long long y;
ss.clear();
ss << s;
ss >> y;

if (0 != (y >> 31))
y = 0;
x = y;

return sign*x;
}
};
[注意]

有一点题目没有描述清楚。对于反转之后的结果超出int范围的,需要返回0。例如,2147483647反转之后为7463847412,超过了int的范围,应返回0。在程序中,实际上就是判断了去符号之后,超过31位的部分是否不为0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode algorithm