Leetcode_7_Reverse Integer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pistolove/article/details/41578077

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41578077


Reverse Integer

 

Reverse digits of an integer.

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


思路:

(1)这道算法题属于OJ中比较简单的题目。题意是将给定的整数逆序,但是涉及到几种特殊情况需要考虑。

(2)为了便于处理,将整数转为字符串。我们只需要遍历一次该字符串即可。

(3)在遍历的过程中,需要对正负数进行判断,当字符串长度大于0时,先取第一个字符进行判断,看其是否等于‘-’,如果相等

         就是负数,需要设置一个标志位。

(4)在继续遍历的过程中,只需判断字符是否为数字(显然都是),然后通过标志位判断正负后进行累加操作。

(5)需要注意的时,翻转后的的整数可能会超过int的最大值,为了防止越界,我们定义的sun的类型必须为long,这样当大于或

         者小于int的最大值和最小值时就返回0;其余情况直接将long强转为int,并返回结果。

(6)注意上述几个方面后,OJ通过肯定没问题。


算法实现代码如下所示(希望对你有所帮助,谢谢):

public static int reverse(int x) {
	String s = String.valueOf(x);
	long sum = 0;
	boolean isnegitive = false;
	for (int i = s.length()-1; i >=0 ; i--) {
		if(s.charAt(0)=='-'){
			isnegitive = true;
		}
		
		if( Character.isDigit(s.charAt(i))){
			if(isnegitive){
				sum = sum * 10 - Integer.parseInt(String.valueOf(s.charAt(i)));	
			}else{
				sum = sum * 10 + Integer.parseInt(String.valueOf(s.charAt(i)));
			}
		}
	} 
	 
	if(sum>Integer.MAX_VALUE || sum<Integer.MIN_VALUE){
		 return 0;
	}
	 
	return (int)sum;
}



没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试