Valid Number

Validate if a given string is numeric.

Examples:

Return 0 / 1 ( 0 for false, 1 for true ) for this problem

Clarify the question using “See Expected Output”

Solution:

Time: O(n)
Space: O(1)

public class Solution {
    // DO NOT MODIFY THE LIST. IT IS READ ONLY
    public int isNumber(final String A) {
        char[] arr = A.toCharArray();
        int i = 0;
        boolean first = true;
        boolean second = false;
        boolean dot = false;
        boolean needsNumber = false;
        boolean e = false;
        boolean number = false;
        while (i < arr.length) {
            char c = arr[i];
            if (Character.isDigit(c)) {
                number = true;
                needsNumber = false;
                i ++;
                continue;
            } else if (needsNumber) {
                return 0;  
            } else if (c == '-' || c == '+') {
                if (first) {
                    first = false;
                } else if (e && !second) {
                    second = true;
                } else {
                    return 0;
                }
            } else if (c == ' ') {
                if (number) {
                    while (i < arr.length) {
                        if (arr[i] != ' ') {
                            return 0;
                        }
                        i ++;
                    }
                }
            } else if (c == '.') {
                if (dot || e) {
                    return 0;
                } else {
                    dot = true;
                    number = false;
                    needsNumber = true;
                }
            } else if (c == 'e') {
                if (e) {
                    return 0;
                } else {
                    e = true;
                    number = false;
                }
            } else {
                return 0;
            }
            i ++;
        }
        return number ? 1 : 0;
    }
}