题目: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 };
时间: 2024-10-12 16:04:20