【LeetCode】007 Reverse Interger

题目:LeetCode 007 Reverse Interger

题意:将一个整数的数字反转。保留正负符号。

思路:先将整数变成字符串,然后判断是否为负数,或是否含有’+’,然后从字符串末尾开始累计得到新整数即可。

但是还会有特殊情况,即正向为Int范围内,但反转之后会溢出,因此要进行特判。

代码如下:

 1 class Solution {
 2 public:
 3     int reverse(int x) {
 4         int len, flag = 1, i = 0;
 5         long long ans = 0;
 6         string s = to_string(x);
 7 
 8         len = s.size();
 9         len--;
10         if(s[i] == '-')
11         {
12             flag = -1;
13             i++;
14         }
15         // else if(s[i] == '+') i++;
16 
17         while(len >= i)
18         {
19             ans *= 10;
20             ans += s[len--]-'0';
21         }
22         ans *= flag;
23         //cout << ans << endl;
24         // 返回值根据预设的函数类型自动变,Longlong也会自动按int溢出处理
25         if(ans > INT_MAX || ans < INT_MIN) return 0;
26         return ans;
27     }
28 };

 

posted @ 2015-04-29 20:31  二喵de喵  阅读(140)  评论(0编辑  收藏  举报