7.整数反转

​​题目来源:

        leetcode题目,网址:7. 整数反转 - 力扣(LeetCode)

解题思路:

       首先,若所给整数是 0 或者 1<<31 (int 所能表示最大负数),直接返回 0。接着记录该数的符号并将该数取绝对值。接着逐位取数求和,当其超过 ((((unsigned int)1<<31)-1)/10) (int 所能表示最大数除以10),还要进行下一轮求和,其超出 int 表示范围,返回 0.

解题代码:

class Solution {
public:
    int reverse(int x) {
        if(x==0 || x==1<<31){
            return 0;
        }
        int res=0;
        int flag=x>0?1:-1;
        x=x>0?x:-x;
        while(x!=0){
            if(res>((((unsigned int)1<<31)-1)/10)){
                return 0;
            }
            res=res*10+x%10;
            x=x/10;
            cout<
 
  

总结:

        可以先获取十进制位数并将 int 所能表示最大值反转,当期十进制位数为 10 并且当前已获得前 x 位大于 int 所能表示最大值反转 后的前 x 位,返回 0.

        官方题解也是一样的思路,不过他没有将其转化为整数后求和。


你可能感兴趣的:(#,C++,LeetCode,C++)