其他分享
首页 > 其他分享> > leetcode7:整数反转

leetcode7:整数反转

作者:互联网

0x00:问题描述

  将一int型数字实现高低位反转,若遇到反转后的数值超出int型变量表示范围则返回0值。

  原题链接:https://leetcode-cn.com/problems/reverse-integer/

0x01:解题思路

  由于数字反转后数值大小可能超限,故采用字符串的形式进行反转处理会比较方便。

  此处用到的两C++标准库函数: string to_string(int)、int stoi(string)。前者实现整型变量->string字符串,后者实现string字符串->整型变量。

  注意:DEV C++存在无法使用to_stringstoi等标准库函数的情况,此时需按如下步骤修改编译器选项:【工具】-【编译器选项】-【编译时加入以下命令】-“-std=c++11" 。

0x02:代码

 1 class Solution{
 2 public:
 3     int reverse(int x){
 4         int flag=1;
 5         if(x>0){flag=-1;    x=-x;}                   
 6         string s1=to_string(x),maxs="-2147483648";    
 7         int i=1,j=s1.size()-1;
 8         for(;i<j;i++,j--)   swap(s1[i],s1[j]);    
 9         if(s1.size()==11&&s1>maxs)    return  0;    
10         return flag*stoi(s1);                    
11     }    
12 };

0x03:几点说明

#.将x统一变为负数,方便后续一致化处理。不统一为正数的原因是,对-2147483648符号取反得出的结果已经超出了INT_MAX

#.对string字符串的反转方法采用了swap函数进行逐位反转。

#.Line9中条件判断表达式利用了string所支持的比较运算符'>',由此筛选出反转后数值超限的特殊情况。

标签:leetcode7,string,int,反转,整数,flag,stoi,#.
来源: https://www.cnblogs.com/leuxon/p/14537892.html