题目大意:将一个32位的整数颠倒输出,注意如果颠倒后的整数超过了int表示的范围,则输出0
题目分析:首先,明确32位整数可表示的范围是[-2^31,2^31-1]。 当颠倒的数超过这个范围,则输出0.
本题主要使用栈来实现,从高到低位,依次求得每位数,并将其压入栈中。然后将栈中的元素依次弹出,注意前几次若是0,则不考虑,直到出现第一个非零元素,之后出现的零由于不在首位,所以都要考虑在内。
代码展示:
class Solution { public: int reverse(int x) { stack<int>s; int a; while(x){ a = x%10; x = x/10; s.push(a); } long long y = 0; long long k = 1; bool flag = false; while(!s.empty()){ y = y + s.top()*k; if(s.top()!=0 || flag){ k = k * 10; flag = true; } s.pop(); } if(y>pow(2,31)-1 || y<-pow(2,31)) y = 0; return y; } };