[LeetCode] Reverse Integer 解题报告

来源:互联网 发布:淘宝控股人是谁 编辑:程序博客网 时间:2024/05/19 12:25

—— 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。

0 0
原创粉丝点击