leetcode - reverse integer

topic:

Given a 32-bit signed integer, invert the numbers in the integer.

Example 1:

Input: 123
Output: 321

 Example 2:

Input: -123
output: -321

Example 3:

Input: 120
Output: 21

Notice:

Suppose our environment can only store 32-bit signed integers whose values ​​are in the range [−231, 231 − 1]. According to this assumption, if the inverted integer overflows, 0 is returned.

 

A possible answer (java implementation):

public class Id07ReverseInteger {
    public int reverse(int x) {
        String xString = String.valueOf(x);
        char[] intChars = xString.toCharArray();

        boolean negative = false;
        int size = intChars.length;
        if (intChars[0] == '-') {
            negative = true;
            size -= 1;
        }
        int forsize;

        if (size % 2 == 1) {
            forsize = (size - 1) / 2;
        } else {
            forsize = size / 2;
        }
        for (int i = 0; i < forsize; i++) {
            if (negative) {
                char temp = intChars[i + 1];
                intChars[i + 1] = intChars[size - i];
                intChars[size - i] = temp;
            } else {
                char temp = intChars[i];
                intChars[i] = intChars[size - i - 1];
                intChars[size - i - 1] = temp;
            }
        }

        try {
             //// TODO: 2018/4/28 Optimize maximum value judgment 
            Integer result = Integer.valueOf( new String(intChars));
             return result;
        } catch (NumberFormatException e) {
            return 0;
        }

    }


    public static void main(String[] args) {
        Id07ReverseInteger id07ReverseInteger = new Id07ReverseInteger();
        id07ReverseInteger.reverse(Integer.MIN_VALUE);
//        System.out.println(Integer.valueOf("-0010"));
    }

}

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325012706&siteId=291194637