LeetCode Reverse Integer(整数翻转)

       在上一篇博客中我讲了怎样去翻转一个单链表,这里介绍一下怎样去翻转一个整数,看似翻转整数要比翻转链表简单很多,其实确实要简单一些哈,不过可能考虑的情况就会更多一些,下面是题目要求:

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

Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

       由题意得,我们在翻转时得考虑三种情况,第一得考虑正负整数吧,第二得考虑以0结尾的数字,第三就得看Note了,一般LeetCode里面的注意讲的都是边界值考虑,在这里呢,它的大概意思就是我们只能处理在32位带符号整数范围内的值,当完成一个整数翻转后,若它超出了这个范围,我们则返回一个0值,实际上Java对于溢出值就是返回0值,刚看到这道题呢,觉着挺简单的,也确实做出来了,一次AC,不过总觉着缺少了点什么,又去翻了翻社区,发现自己的算法确实有点low了哈哈,总结就是自己对循环递归的思想掌握的确实不是很好,这也是我以后会多加注意和练习的地方,这里我把我的代码和大佬的代码都给大家贴一下哈......

第一种解法:

package com.gaoxue.LeetCode;

public class ReverseInteger {

	public int reverse(int x) {
		long sum = 0;
		String s2 ="";
		StringBuffer sb = null;
        String s = String.valueOf(x);
        if(s.contains("-")) {
        	s2 = s.substring(1, s.length());
        	sb = new StringBuffer(s2);
        }else {
        	sb = new StringBuffer(s);
        }
        String str = sb.reverse().toString();
        for(int i=0,j=str.length()-1;i<str.length();i++,j--) {
        	sum += Math.pow(10, j)*(str.charAt(i)-'0');
        }
        if(sum>Integer.MAX_VALUE)
    		return 0;
        if(s.contains("-")) {
        		return (int)(0-sum);
        }else {
        	return (int)sum;
        }
    }
	public static void main(String[] args) {
		System.out.println(new ReverseInteger().reverse(1534236469));
	}
}
第二种解法:
package com.gaoxue.LeetCode;

public class ReverseInteger {

	public int reverse(int x) {
		long result =0;
		while(x != 0)
		{
		    result = (result*10) + (x%10);
		    if(result > Integer.MAX_VALUE) return 0;
		    if(result < Integer.MIN_VALUE) return 0;
		    x = x/10;
		}
		return (int)result;
		}
	public static void main(String[] args) {
		System.out.println(new ReverseInteger().reverse(1534236469));
	}
}
       总结一下,觉着自己总是喜欢站在字符串的角度,习惯了以线性的方式去考虑问题,而没有太多的去关注数据本身,或许这才是算法本身的奥秘吧,对了,这里给大家推荐一下LeetCode这个刷题平台,挺不错的,题目难度分了中高低三类,建议新手先去拿easy题练手,这些题会让你的基础有很大的提高,然后每天可以做个三五道简单题,题不再多,重在坚持,然后就是每天总结一下自己学到的算法思想,这会给我们带来很大帮助的,好啦,赶紧开始刷题吧~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值