给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123 输出:321
示例 2:
输入:x = -123 输出:-321
示例 3:
输入:x = 120 输出:21
示例 4:
输入:x = 0 输出:0
提示:
-231 <= x <= 231 - 1
思路
链表录入一遍,读取一遍
源代码
class Solution
{
public:
struct Node
{
int val;
Node* next;
Node(){val=0; next=nullptr;}
Node(int n)
{
int abs_n=n<0?-n:n;
val=abs_n%10;
next=nullptr;
if(abs_n/10!=0)
{
Node* nextNode=new Node(abs_n/10);
next=nextNode;
}
}
};
int reverse(int x)
{
if(x>INT_MAX||x<=INT_MIN) return 0;
int abs_x=x<0 ? -x : x;
Node* start=new Node(abs_x);
Node* ptr=start;
long long result=0;
while(ptr!=nullptr)
{
result=result*10+ptr->val;
Node* next=ptr->next;
delete ptr;
ptr=next;
}
if(result>INT_MAX||result<INT_MIN) return 0;
return x<0 ? -result : result;
}
};