LeetCode----- 7.Reverse Integer

来源:互联网 发布:phantomjs java 编辑:程序博客网 时间:2024/06/10 00:58
Example1: x = 123,return 321 

Example2: x = -123,return -321

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

输入假定为32位有符号整数。当反转的整数溢出时您的函数应返回0


解题思路:本题是将一个整型的数进行反转,然后输出。首先先检验数据的有效性,如果超过int型范围,直接输出为0,;检查传入的数据是否为负数,如果为负数转换为正数,并设置标志。然后将传入的整数转换成字符串,再接着转换成字符数组。接着使用两个变量start,end分别对应数组下标的首尾,然后循环遍历,将首尾对应的元素值进行互换。最后输出结果需要检验数据的有效性。

比如:1547483647----->反转后为----->7463847451,输出结果为0。

public static int reverse(int x) {    boolean flag = false;    if(x >2147483647 || x <-2147483647) {    return 0;    }    if(x < 0) {    x = Math.abs(x);    flag = true;    }    char[] ch = String.valueOf(x).toCharArray();    for(int start=0,end=ch.length-1;start<end;start++,end--) {    char c = ch[start];    ch[start] = ch[end];    ch[end] = c;    }    if(flag) {    if(-Long.parseLong(String.valueOf(ch))<-2147483647) {    return 0;    }else {    return -Integer.parseInt(String.valueOf(ch));}    }else {    if(Long.parseLong(String.valueOf(ch)) >2147483647) {    return 0;    }else {    return Integer.parseInt(String.valueOf(ch));}} }



LeetCode上面的算法

    public static int reverse2(int x) {    int result = 0;    while(x != 0) {    int temp = x%10;    int newResult = result*10 + temp;    if((newResult - temp)/10 != result) {    return 0;    }    result = newResult;    x = x/10;    }    return result;    }



写法3:题目是将Interger进行反转,可以直接从后往前依次添加到StringBuilder中,然后再转换回Interger类型。

    public static int reverse3(int x) {    StringBuilder sb = new StringBuilder();    String temp = String.valueOf(x);    if(x >2147483647 || x <-2147483647) {    return 0;    }    char ch = temp.charAt(0);    if(ch == '-') {    sb.append(ch);    }    for (int i = temp.length()-1; i>=0; i--) {    if(Character.isDigit(temp.charAt(i))) {    sb.append(temp.charAt(i));    }} if(Long.valueOf(sb.toString())<-2147483647) {return 0;}else if(Long.valueOf(sb.toString()) > 2147483647){return 0;}else {return Integer.valueOf(sb.toString());}    }