zoukankan      html  css  js  c++  java
  • leetcode:7. 整数反转

    题目描述:

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    示例:

    输入: 123
    输出: 321
    输入: -123
    输出: -321
    输入: 120
    输出: 21

    注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    思路分析:

    这道题是easy,实际上思路是比较简单的,首先用一个数组逆向的存储整数各位,再遍历一次数组,重新构建一遍即可。但是由于这个整数溢出问题,我也磕磕绊绊提交了多次,主要还是自己基础不够扎实。这里需要注意的是如何对于整数溢出进行判断,参考了一个博客的相关内容:https://blog.csdn.net/xiaomingZeng/article/details/80526607

    另外也有一些题解采用了更加简洁的方法,没有用我这种这么直接的方式去判断溢出,算是比较巧妙的。可以参考博客:https://www.cnblogs.com/wmx24/p/9149916.html

    代码:

     1 class Solution {
     2 public:
     3     int reverse(int x) {
     4         if(x>INT_MAX || x<INT_MIN )
     5             return 0;
     6         vector<int> num;
     7         while(x!=0)
     8         {
     9             int tmp = x%10;
    10             num.push_back(tmp);
    11             x = x/10;
    12         }
    13         int res = 0;
    14         int base = 1;
    15         for(int i=num.size()-1; i>=0; i--)
    16         {
    17             
    18             if(num[i] > INT_MAX/base || num[i] < INT_MIN/base)
    19                 return 0;
    20             if(num[i]<0)
    21             {
    22                 if(base*num[i] < INT_MIN - res)
    23                     return 0;
    24             }
    25             else if(num[i]>0)
    26             {
    27                 if(base*num[i] > INT_MAX - res)
    28                     return 0;
    29             }
    30             res += num[i]*base;
    31             if(i>0)
    32             {
    33                 if(base >= INT_MAX/10)
    34                     return 0;
    35                 else
    36                     base *= 10;
    37             }
    38         }
    39         return res;
    40     }
    41 };
  • 相关阅读:
    搜索专题
    KMP专题
    CSU 1326: The contest(分组背包)
    强连通专题
    MST:Bad Cowtractors(POJ 2377)
    MST:Agri-Net(POJ 1258)
    ShortestPath:Layout(POJ 3169)(差分约束的应用)
    MST:Conscription(POJ 3723)
    MST:Roadblocks(POJ 3255)
    DP:Space Elevator(POJ 2392)
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11107817.html
Copyright © 2011-2022 走看看