【LeetCode热题100道】7. 整数反转

【LeetCode热题100道】7. 整数反转
文章图片

要求不能使用long,int类型溢出没想到好的方法。改用字符串后溢出的地方判断的还是不好。

class Solution { public: int reverse(int x) {string result = ""; int flag = 1; if(x < 0) { flag = -1; }std::stack st; while(x != 0) { st.push(std::abs(x % 10)); x /= 10; } while(!st.empty()) { result = std::to_string(st.top()) + result; st.pop(); } if(std::to_string(atoi(result.c_str())) != result && result[0] != '0') { return 0; } //if(atoi(result.c_str())*flag > INT_MAX || atoi(result.c_str())*flag < INT_MIN) //{ //return 0; //} return atoi(result.c_str())*flag; } };

【【LeetCode热题100道】7. 整数反转】做第八题时想到了判断溢出的方法:
class Solution { public: int reverse(int x) {int result = 0; int flag = 1; if(x < 0) { flag = -1; }std::stack st; while(x != 0) { st.push(std::abs(x % 10)); x /= 10; } int temp = 1; while(!st.empty()) { if(st.top() > (INT_MAX - result) / temp) { return 0; } result = st.top()*temp + result; st.pop(); if(!st.empty()) { temp *= 10; } } return result*flag; } };

    推荐阅读