Interview 150

Reverse Integer

Problem
LC 7
File
interview150_LC7ReverseInteger.java
Path
pkg5leetcode/interview150/interview150_LC7ReverseInteger.java
Package
pkg5leetcode.interview150
Command
java pkg5leetcode/interview150/interview150_LC7ReverseInteger.java
Approach
Pop/push digits; check overflow before multiplying by 10.
Complexity
Time O(log n), Space O(1)

LeetCode solutions

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg5leetcode/interview150/interview150_LC7ReverseInteger.java
1package pkg5leetcode.interview150;2 3/*4 * Reverse Integer | LC 75 * APPROACH: Pop/push digits; check overflow before multiplying by 10.6 * COMPLEXITY: Time O(log n), Space O(1)7 */8public class interview150_LC7ReverseInteger {9    static int reverse(int x) {10        int rev = 0;11        while (x != 0) {12            int pop = x % 10;13            x /= 10;14            if (rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;15            if (rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;16            rev = rev * 10 + pop;17        }18        return rev;19    }20 21    public static void main(String[] args) {22        check(reverse(123) == 321, "case1");23        check(reverse(-123) == -321, "case2");24        check(reverse(120) == 21, "case3");25        System.out.println("all tests passed");26    }27 28    static void check(boolean cond, String name) {29        if (!cond) throw new AssertionError("FAILED: " + name);30        System.out.println("  PASS " + name);31    }32}