LeetCode之Reverse Integer

简介: LeetCode之Reverse Integer

1、题目

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

click to show spoilers.

Note:

The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

Subscribe to see which companies asked this question.

2、代码实现

代码实现1、

通过不了LeetCode

    public static int reverse(int x) {
        if (x > Integer.MAX_VALUE || x < Integer.MIN_VALUE) {
          return 0;
        }
      boolean flag = false; //x是负数就是true,正数false
      if (x < 0) {
        flag = true;
      }
      String string = String.valueOf(x);
      String spliteStr =  flag ? string.substring(1) : string;
      StringBuffer sb = new StringBuffer(spliteStr);
      sb = sb.reverse();
      String result = sb.toString();
      result = flag ? "-" + result : result;
      long value = Long.valueOf(result);
        if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) {
          return 0;
        }
        return (int)value;
    }

代码实现二、

通过不了LeetCode

    public static int reverse1(int x) {
      if (x > Integer.MAX_VALUE || x < Integer.MIN_VALUE) {
          return 0;
        }
      long result = 0;
      int temp = Math.abs(x);
      while (temp > 0) {  
        result *= 10;
        result = result + temp % 10;
        temp /= 10;
      }
     if (result > Integer.MAX_VALUE ||result<Integer.MIN_VALUE ) {
      return 0;
    }
      return (int)(x >= 0 ? result : -result);
    }

代码实现三

可以通过LeetCode

    public static int reverse3(int n) {
      if (n > Integer.MAX_VALUE || n < Integer.MIN_VALUE) {
          return 0;
        }
      //输出结果定义为long
    long sum=0;
    while (n != 0) {
      int s = n % 10;
      sum = sum * 10 + s;
      n = n / 10;
    }
    //防止溢出操作
    if (sum > Integer.MAX_VALUE || sum < Integer.MIN_VALUE) {
      return 0;
    }
    return (int)sum;
    }

注意有溢出问题,对比分析,第一个实现和第二个实现 不越界没问题。

相关文章
|
机器学习/深度学习 NoSQL 算法
LeetCode 344. 反转字符串 Reverse String
LeetCode 344. 反转字符串 Reverse String
LeetCode 206. 反转链表 Reverse Linked List
LeetCode 206. 反转链表 Reverse Linked List
|
机器学习/深度学习
LeetCode 397. Integer Replacement
给定一个正整数 n,你可以做如下操作: 1. 如果 n 是偶数,则用 n / 2替换 n。 2. 如果 n 是奇数,则可以用 n + 1或n - 1替换 n。 n 变为 1 所需的最小替换次数是多少?
53 0
|
机器学习/深度学习 NoSQL
LeetCode 344. Reverse String
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
70 0
LeetCode 344. Reverse String
LeetCode 343. Integer Break
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
48 0
LeetCode 343. Integer Break
LeetCode 190. Reverse Bits
颠倒给定的 32 位无符号整数的二进制位。
63 0
LeetCode 190. Reverse Bits
LeetCode之Reverse String II
LeetCode之Reverse String II
84 0
LeetCode之Reverse String
LeetCode之Reverse String
71 0
LeetCode 150:逆波兰表达式求值 Evaluate Reverse Polish Notation
题目: 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. 说明: 整数除法只保留整数部分。
1354 0
|
Java Python
LeetCode 206:反转链表 Reverse Linked List
反转一个单链表。 Reverse a singly linked list. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。
649 0