• [leetcode]7. Reverse Integer反转整数


    Given a 32-bit signed integer, reverse digits of an integer.

    Example 1:

    Input: 123
    Output: 321
    

    Example 2:

    Input: -123
    Output: -321
    

    Example 3:

    Input: 120
    Output: 21

    题意:

    给定一个10进制整数,翻转它。

    Solution1: directly do the simulation

    Two tricky parts to be handled:

    (1) overflow :  32-bit signed integer range: [−231,  231 − 1],  whihc means [−2,147,483,648  2,147,483,647].  What if input is 2,147,483,647, after reversing, it will be 7,463,847,412.

    (2) negative numbers: for each iteration, we do multiplication or division with a position number -- 10 , which means if sign is '-' , the sign will be kept all the time.

    code:

     1 /*
     2   Time Complexity:  O(log(n))  coz we just travese half part of original input
     3   Space Complexity: O(1) 
     4 */
     5 class Solution {
     6     public int reverse(int input) {
     7         long sum = 0; 
     8         while(input !=0){
     9             sum = sum*10 + input %10;
    10             input = input /10;
    11             
    12             if(sum > Integer.MAX_VALUE || sum < Integer.MIN_VALUE){
    13                 return 0;  // returns 0 when the reversed integer overflows    
    14             }
    15         }  
    16         return (int)sum;
    17     }
    18 }
  • 相关阅读:
    九、分布式事务
    L2008 最长对称子串
    L2004 这是二叉搜索树吗?
    L2001 紧急救援
    L2003 月饼
    L2007 家庭房产
    L2006 树的遍历
    L2009 抢红包
    L2005 集合相似度
    L2002 链表去重
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/10652711.html
Copyright © 2020-2023  润新知