博客信息

LeetCode——第7题

发布时间:『 2018-10-17 13:12』  博客类别:LeetCode  阅读(124) 评论(0)

LeetCode——第7题

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 store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.


Java:

package top.ruandb.leetcode;
/**
 * 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 store integers within the 32-bit 
 *  signed integer range: [−2^31,  2^31 − 1]. 
 *  For the purpose of this problem, assume that your function returns 0 when the reversed 
     integer overflows.
 * @author rdb
 *
 */
public class LeetCode7 {
	/**
	 * 将数字当字符串处理,倒排序
	 * @param x
	 * @return
	 */
	public int reverse(int x) {
		boolean isNegative = false;
		StringBuilder sb = new StringBuilder();
		int result;
		if (x < 0) {
			isNegative = true;
			x = x * (-1);
		}
		char[] xStr = String.valueOf(x).toCharArray();
		int lNum = xStr.length;
		for (int i = 0; i < lNum; i++) {
			sb.append(xStr[lNum - i - 1]);
		}
		if (isNegative) {
			if (sb.toString().length() > 10
					|| (sb.toString().length() == 10 && sb.toString()
							.compareTo("2147483648") > 0)) {
				return 0;
			}
			result = Integer.parseInt(sb.toString()) * (-1);
		} else {
			if (sb.toString().length() > 10
					|| (sb.toString().length() == 10 && sb.toString()
							.compareTo("2147483647") > 0)) {
				return 0;
			}
			result = Integer.parseInt(sb.toString());
		}

		return result;
	}

	/**
	 * 大神解法
	 * @param x
	 * @return
	 */
	public int reverse1(int x) {
		int rev = 0;
		while (x != 0) {
			int pop = x % 10;
			x /= 10;
			if (rev > Integer.MAX_VALUE / 10
					|| (rev == Integer.MAX_VALUE / 10 && pop > 7))
				return 0;
			if (rev < Integer.MIN_VALUE / 10
					|| (rev == Integer.MIN_VALUE / 10 && pop < -8))
				return 0;
			rev = rev * 10 + pop;
		}
		return rev;
	}

	public static void main(String[] args) {
		LeetCode7 le = new LeetCode7();
		int result = le.reverse1(120);
		System.out.println(result);
	}
}


关键字:     leetcode       7  

上一篇:LeetCode——第6题

下一篇:Spark—RDD介绍

评论信息
暂无评论
发表评论
验证码: 
Powered by 阮大彬 V1.0 皖ICP备18008696号-1