leetcode Reverse Integer java基本编程学习笔记(一)

时隔一个月,再次拾起leetcode开始刷题。

我这种人吧,总是做一段时间,某天因为某个原因给搁置了,然后就没有然后了,等在想起来总能给自己那段时间寻找"合理"的借口,这种人是不是要一辈子成为loser呢?

题目:        

         Reverse digits of an integer.

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

注意: 一些边界条件的考虑可以在笔试或面试时为你的代码带来加分的效果

     1. int x =0的情况,单独处理。

     1.考虑翻转后的溢出问题;     一般溢出情况需要出题人声明 异常处理。

     2. 如果最后都是0,该怎么处理?  例如 10,100等?  所以while判断的终止条件应该是x!=0  而不是余数怎么着怎么着。

     http://blog.csdn.net/linhuanmars/article/details/20024837 (java 此博文中 任何越界返回值都为0)

1> public class Solution {
    public int reverse(int x) {
       if(x==0)
         return x;
       int t;
       long y = 0;
       int max = Integer.MAX_VALUE;
       int min = Integer.MIN_VALUE;
       while(x!=0){
           t = x % 10;         // [这两行改写成: y =y*10 + x % 10 ; ]
           y = y*10 +t;
           if(y > max || y < min){
             y = 0;
             return (int)y;
           }
           
           x = x/10;
       }
       return (int)y;
    }
}
2> <a target=_blank href="http://blog.csdn.net/linhuanmars/article/details/20024837">http://blog.csdn.net/linhuanmars/article/details/20024837</a> (java 此博文中 任何越界返回值都为0) 
public int reverse(int x) {
    if(x==Integer.MIN_VALUE)   //作者代码的巧妙之处。
        return 0;
    int num = Math.abs(x);
    int res = 0;
    while(num!=0)
    {
        if(res>(Integer.MAX_VALUE-num%10)/10)   //作者代码额巧妙之处。
            return 0;
        res = res*10+num%10;
        num /= 10;
    }
    return x>0?res:-res;
}

3> //reverse新思路,但是没有考虑溢出问题。
	public static int reverse(int num){
	    char[] numArray = null;
	    String numStr="";
	    if (num == 0) {
	        return 0;
	    } else if (num > 0) {
	        numArray = (num + "").toCharArray();
	        System.out.println(numArray);
	    } else {
	        numStr+="-";
	        numArray = (num + "").substring(1).toCharArray();
	        System.out.println(numArray);
	    }
	    for(int i =numArray.length-1;i>=0;i--){
	        numStr+=numArray[i];
	    }
	   // return Integer.valueOf(numStr).intValue();     //String类型和int类型的转换 第一种方法
	    return Integer.parseInt(numStr);       //String类型和int类型的转换 第二种方法
	}


4> 参考别的人的C++代码:  <a target=_blank href="http://blog.csdn.net/zhouworld16/article/details/16067825">http://blog.csdn.net/zhouworld16/article/details/16067825</a>
class Solution {  
public:  
    int reverse(int x) {  
        // IMPORTANT: Please reset any member data you declared, as  
      // the same Solution instance will be reused for each test case.  
         
        const int max = 0x7fffffff;  //int最大值  
        const int min = 0x80000000;  //int最小值  
        long long sum = 0;   
          
        while(x != 0)  
        {  
           int temp = x % 10;  
            sum = sum * 10 + temp;  
           if (sum > max || sum < min)   //溢出处理  
            {  
                sum = sum > 0 ? max : min;    
                return sum;  
           }  
            x = x / 10;  
        }  
      return sum;  
    }  
}; 

 

java基础学习。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值