zoukankan      html  css  js  c++  java
  • Java 反转整数

    将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。

    给定 x = 123,返回 321

    给定 x = -123,返回 -321

    思路:字符串处理,需要考虑一下情况    12300->00321 这时需要处理掉前面的0, 翻转后大于2的32次方(整数的最大值,返回0)

    代码如下,时间复杂度O(n),空间复杂度O(n),如有更好的方式,请留言

     1   public int reverseInteger(int n) {
     2         String flag=n>=0?"":"-";
     3         char[] num = (Math.abs(n)+"").toCharArray();
     4         //int 最大值是2的32次方  21亿 大于10位置就不用考虑了
     5         if(num.length>10){
     6             return 0;
     7         }
     8 
     9 
    10         //翻转char数组
    11         int start=0;
    12         int end = num.length-1;
    13         while(start+1<=end){
    14             char temp = num[start];
    15             num[start]=num[end];
    16             num[end]=temp;
    17             start++;
    18             end--;
    19         }
    20 
    21         //处理0的情况   12300->00321 
    22         String reverseStr = new String(num);
    23         if(reverseStr.charAt(0)=='0'){
    24             int k=0;
    25             while(k<reverseStr.length()-1&&reverseStr.charAt(k)==0){
    26                 k++;
    27             }
    28             reverseStr=reverseStr.substring(k);
    29         }
    30         
    31        //处理大于2的32 并且还为10位的情况,int最大2147483647
    32         Long overNum= Long.valueOf(reverseStr);
    33         if(overNum>Integer.MAX_VALUE){
    34             return 0;
    35         }
    36         
    37        //拼接前边的标志位
    38         reverseStr=flag+reverseStr;
    39         return Integer.valueOf(reverseStr);
    40     }

     心得体会,这题目并不难,但是翻转后的特殊情况需要考虑,最开始没有想到处理0这种请跨国,以后思路还需要严谨一些

  • 相关阅读:
    IOS AutoLayout 代码实现约束—VFL
    理解iOS Event Handling
    一些优秀的iOS第三方库
    iOS中NSNotification、delegate、KVO三者之间的区别与联系?
    laravel 框架加载自定义函数/类文件
    Nodejs 使用 socket.io 简单实现实时通信
    Redis 与 Memcache 的异同之处
    Redis 服务安装
    PHP 依赖管理神器 Composer 基本使用
    Ajax无刷新图片插件使用
  • 原文地址:https://www.cnblogs.com/lilefordream/p/7426723.html
Copyright © 2011-2022 走看看