Leetcode_7_Reverse Integer

本文是在学习中的总结,欢迎转载但请注明出处: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;
}
上一篇:UWP 磁贴设置


下一篇:相片后期处理,PS调出温暖的逆光美女