【LeetCode从零单排】No.7 Reverse Integer

简介: 前话      今天开始励志刷一下leetcode上面的题目(还好这个网站没被TG和谐)。从easy的开始,数一下差不多有40道,争取两个月搞定。题目       没想到做的第一道题目,虽然看似简单,却费了很大周折。题目如下:Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -1

前话

      今天开始励志刷一下leetcode上面的题目(还好这个网站没被TG和谐)。从easy的开始,数一下差不多有40道,争取两个月搞定。

题目

       没想到做的第一道题目,虽然看似简单,却费了很大周折。

题目如下:

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321


      刚看到这道题,首先蹦出的想法是把整数转换为字符串,然后前后位置换下再转回int型,实事证明这样是不可取的,因为当输入的int型数字很大的时候,比如412851289525983,就会产生溢出,这样在使用Integer.parseInt这种函数的时候会报错,正确的做法是对数字进行int操作,利用取10的余数获得每位数字。下面展示下,错误答案和正确答案。

代码

1.正确解
public class Solution {
    public int reverse(int x) {
        int sum = 0;
        while (Math.abs(x) != 0)
        {
            if(Math.abs(sum) > Integer.MAX_VALUE / 10)
            {
                return 0;
            }
            sum = sum * 10 + x % 10;
            x = x / 10;
        }

        return sum;
    }
}


2.错误解
public class Solution {
    public int reverse(int x) {
     	 if(Math.abs(x)>100){
			 return 0;
		 }
		 else{
	     String x_str=Integer.toString(x);
	     char[] x_char = x_str.toCharArray();
	     String x_reverse_str="";
	     //System.out.print(Character.isDigit(x_char[0]));
	    if(Character.isDigit(x_char[0])){	    	 
	    	 for(int i=(x_str.length()-1);i>=0;i--){
	    		 x_reverse_str+=x_char[i];
	      	 }	    		 
	    	 }
	    else{
	    	  x_reverse_str+=x_char[0];
	    	  for(int i=(x_str.length()-1);i>=1;i--){
		    		 x_reverse_str+=x_char[i];
		    	 }	    	  	    	
	    }	    
	     return Integer.parseInt(x_reverse_str);}
		 
    }
}





/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/



目录
相关文章
|
索引
LeetCode 345. Reverse Vowels of a String
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
104 0
LeetCode 345. Reverse Vowels of a String
|
机器学习/深度学习 NoSQL
LeetCode 344. Reverse String
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
100 0
LeetCode 344. Reverse String
LeetCode 343. Integer Break
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
79 0
LeetCode 343. Integer Break
LeetCode 190. Reverse Bits
颠倒给定的 32 位无符号整数的二进制位。
93 0
LeetCode 190. Reverse Bits
LeetCode 150. Evaluate Reverse Polish Notation
根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
48 0
LeetCode 150. Evaluate Reverse Polish Notation
LeetCode 92. Reverse Linked List II
给定一个链表,反转指定的子序列.
82 0
LeetCode 92. Reverse Linked List II
|
机器学习/深度学习 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 所需的最小替换次数是多少?
96 0
LeetCode之Reverse String II
LeetCode之Reverse String II
118 0