• 7. 整数反转


    1. 题目

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

    2. 示例

    示例1:

    输入:x = 123
    输出:321

    示例2:

    输入:x = -123
    输出:-321

    示例3:

    输入:x = 120
    输出:21

    提示:

    -231 <= x <= 231 - 1

    3. 题解

     第一步:约束条件

    观察本题的约束条件:32位的有符号整数,不能用64位的。

    第二部:思考

    首先想到的是字符串,然后数学计算。

    第三部:字符串

    1. 转字符串

    2. 遍历字符串,判断第一个字符是否是符号位?根据每一位字符求和。

    3. 加入约束条件,我想到的约束方式有:

    if(c != 0 && sum % c != cur) return 0;

    其中c是当前要放到第一位的数,sum是总和,cur是上一次计算的sum。

    4. 实现

     1 public class Reverse7 {
     2     public int reverse(int x) {
     3         int flag = 1;
     4         String s = String.valueOf(x);
     5         int sum = 0, temp = 1;
     6         for(int i = 0; i < s.length(); i++) {
     7             if(i == 0 && s.charAt(i) == '-') {
     8                 flag = -1;
     9             } else {
    10                 int cur = sum;
    11                 int c = Integer.parseInt(String.valueOf(s.charAt(i))) * temp;
    12                 sum += c;
    13                 temp *= 10;
    14                 // if(cur != 0 && sum % 10 != cur % 10) return 0;
    15 
    16                 if(c != 0 && sum % c != cur) return 0;
    17             }
    18         }
    19         return flag * sum;
    20     }
    21 
    22     public static void main(String[] args) {
    23         // int x = 1563847412;
    24         int x = -2147483412;
    25         System.out.println(new Reverse7().reverse(x));
    26     }
    27 }

    5. 总结

      努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

      如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

  • 相关阅读:
    NYOJ 734
    NYOJ 762
    NYOJ 743
    NYOJ 478
    NYOJ 451
    NYOJ 461
    NYOJ 485
    NYOJ 333
    平均互信息
    ASCII码
  • 原文地址:https://www.cnblogs.com/haifwu/p/14939983.html
Copyright © 2020-2023  润新知