文章图片
要求不能使用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;
}
};
推荐阅读
- c语言|数据结构3--深入了解单向链表的实现
- 音视频|【音频】削波失真(爆音)问题定位与解决
- C++基础|C++基础(三) 格式控制 setf、setiosflags等详解及避坑
- C++|(C++)cout格式化输出示例
- c++|使用结构体数组求10个学生三门课总平均成绩,及最高分学生信息
- C++|cout.setf()
- c++|C++20三路比较运算符
- C++基础学习|C++学习必备网站推荐收藏
- 动态规划|AcWing 271. 杨老师的照相排列(简单DP)+ 十一届蓝桥杯B组试题E--矩阵