整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

public class IntReverse {
/**
* 借助字符串反转
* @param x
* @return
*/
public int reverse(int x) {
String xStr = String.valueOf(x);
char[] chars =xStr.toCharArray();
StringBuffer tmp = new StringBuffer();
int range =0;
if(x<0) {
tmp.append("-");
range++;
}
for(int i=chars.length-1;i>=range;i--){
tmp.append(chars[i]);
}
return Integer.valueOf(tmp.toString());
}

/**
 * 数学算法
 * @param args
 */
public int reverse1(int x) {
    int result=0;
    while(x!=0){
        int pop = x%10;//取最低位的值,负数取余数,余数也为负数
        x = x/10;//负数取商,商也为负数
        if(result>Integer.MAX_VALUE/10||(result==Integer.MAX_VALUE/10&&pop>Integer.MAX_VALUE%10)){
            result=0;
            break;
        }
        if(result

}

你可能感兴趣的:(整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。)