专业的论坛网站建设,dw用层还是表格做网站快,网页和网站的不同,紧急通知页面升级题目
给你一个 32 位的有符号整数 x #xff0c;返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] #xff0c;就返回 0。
假设环境不允许存储 64 位整数#xff08;有符号或无符号#xff09;。 示例 1#xff1a…题目
给你一个 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:int reverse(int x) {string retto_string(x);int lengthret.size();string str;if(ret[0]-){str-;}for(int ilength-1;i0;i--){if (ret[i] ! -) {str ret[i];}}try {int num std::stoi(str);return num;} catch (const std::out_of_range e) {// 如果转换失败溢出返回0return 0;}}
}; 逐行解析 类定义 class Solution {
public: 定义一个名为 Solution 的类并声明一个公共成员函数 reverse。 函数定义 int reverse(int x) { 定义一个公共成员函数 reverse接受一个整数参数 x 并返回一个整数。 将整数转换为字符串 string ret to_string(x); 使用 to_string 函数将整数 x 转换为字符串 ret。 获取字符串的长度: int length ret.size(); 获取字符串 ret 的长度并将其存储在 length 变量中。 创建一个空字符串来存储反转后的结果 string str ; 初始化一个空字符串 str用于存储反转后的结果。 处理负号 if (ret[0] -) {str -;
} 检查字符串 ret 的第一个字符是否为负号。如果是将负号添加到结果字符串 str 中。 从后向前遍历字符串将字符添加到结果字符串中 for (int i length - 1; i 0; i--) {if (ret[i] ! -) {str ret[i];}
} 使用一个 for 循环从字符串 ret 的最后一个字符开始向前遍历。在每次迭代中检查当前字符是否为负号。如果不是将其添加到结果字符串 str 中。 尝试将字符串转换为整数 try {int num std::stoi(str);return num;
} catch (const std::out_of_range e) {// 如果转换失败溢出返回 0return 0;
} 使用 try 块尝试将结果字符串 str 转换为整数 num。如果转换成功返回 num。如果转换失败例如溢出捕获 std::out_of_range 异常并返回 0。
总结
字符串转换使用 to_string 将整数转换为字符串。处理负号在遍历字符串时先处理负号确保负号被正确添加到结果字符串中。字符串反转从后向前遍历字符串将字符添加到结果字符串中。整数转换使用 std::stoi 将结果字符串转换为整数并捕获可能的异常。
这个题相比于回文数。最困难的一点其实在于溢出这个异常处理