• [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 }
  • 相关阅读:
    拓扑排序
    最少硬币问题(无穷硬币)
    第三届蓝桥杯预赛
    矩形嵌套
    《心术》影评
    区间选点问题
    [转贴] 游戏服务器架构
    D3DXPlaneFromPoints 函数
    内存池实现
    [转]MMORPG游戏服务器端的设计
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/10652711.html
Copyright © 2020-2023  润新知