本文共 1212 字,大约阅读时间需要 4 分钟。
问题描述:给定一个整数,将其进行反转。
解决这个问题需要注意思考几个特殊点:
1、给定的整数处理后超出整数的表示范围,溢出。 2、尾数有0的情况,例如:100,处理后的结果是什么? 3、程序中如何捕获异常。下面给出一种算法(有缺陷)
/* * 给定一个整数,将其进行反转。 * 例如:给定123,反转后的结果为:321 * 如果给定 -123,反转后的结果为:-321 * */ public static int reverse(int x) { String strx = String.valueOf(x); String[] strXArray = strx.split(""); StringBuffer strResult = new StringBuffer(); if (strXArray[0].equals("-")) { strResult. append(strXArray[0]); for (int i=strXArray.length-1; i>=1; i--) { strResult. append(strXArray[i]); } } else { for (int i=strXArray.length-1; i>=0; i--) { strResult. append(strXArray[i]); } } String newStrResult = strResult.toString(); int intResult=Integer.parseInt(newStrResult); return intResult; }
再给出一种算法
public static int reverse(int x) { int result = 0; while (x != 0) { int tail = x % 10; int newResult = result * 10 + tail; if ((newResult - tail) / 10 != result) { return 0; } result = newResult; x = x / 10; } return result; }
(完)
转载地址:http://cgvdi.baihongyu.com/