Leetcode 题目解析之 Valid Number

2022-02-13 15:17:19 浏览数 (2)

Validate if a given string is numeric.

Some examples:

"0" => true

" 0.1 " => true

"abc" => false

"1 a" => false

"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

The signature of the C function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button to reset your code definition.

代码语言:javascript复制
    public boolean isNumber(String s) {
        if (s == null || s.length() == 0) {
            return false;
        }
        char[] chars = s.toCharArray();
        int start = 0, end = chars.length - 1;
        // 除去前后的空格
        while ((start < end) && chars[start] == ' ') {
            start  ;
        }
        while ((start < end) && chars[end] == ' ') {
            end--;
        }
        // 因为while的循环条件是start < end,s为空格时,会剩下一个空格
        if (chars[start] == ' ') {
            return false;
        }
        boolean dot = false;
        boolean num = false;
        boolean ex = false;
        for (int i = start; i <= end; i  ) {
            char c = chars[i];
            if (c >= '0' && c <= '9') {
                num = true;
            } else if (c == 'e') {
                if (ex)
                    return false;
                if (!num)
                    return false;
                ex = true;
                num = false;
                dot = false;
            } else if (c == '.') {
                if (dot) {
                    return false;
                }
                if (ex) {
                    return false;
                }
                dot = true;
            } else if (c == ' ' || c == '-') {
                if (num || dot) {
                    return false;
                }
            } else {
                return false;
            }
        }
        return num;
    }

0 人点赞