日期:2014-05-20  浏览次数:20640 次

问一个算法,如何将数字反转(使用数学方法,不能将它转换成字符或者字符串)
如5669977889=>9887799665
知道的请告诉下,感谢~

------解决方案--------------------
package test;

import java.math.BigDecimal;

public class Tt {

public static void main(String[] args) {

BigDecimal b = null;
String s = "";

BigDecimal big = new BigDecimal("5669977889");
String sBig = String.valueOf(big);
for (int i = sBig.length(); i > 0; i--) {
s += String.valueOf(sBig.charAt(i-1));
}
b = new BigDecimal(s);
System.out.println(b);
}
}
------解决方案--------------------
方法很多:
long n = 5669977889L; // 注意数字的范围.
long result = 0;

while (n != 0) {
result = result * 10 + n % 10;
n /= 10;
}

还有一个很显明的特征, 就是这个题的要求很符合栈的特点, 所以用栈来做也不错.