美文网首页
LeetCode #65 Valid Number

LeetCode #65 Valid Number

作者: 刘煌旭 | 来源:发表于2021-04-15 22:26 被阅读0次
Valid_Number.png
size_t parse_sign(char *s, size_t start) { return (s[start] == '+' || s[start] == '-') ? start + 1 : start; }

size_t parse_digits(char *s, size_t start) {
    size_t n = strlen(s), i = start;
    while (i < n && isdigit(s[i])) I++;
    return I;
}

bool isNumber(char * s){
    size_t start = 0, n = strlen(s);
    start = parse_sign(s, start);
    if (start == n || (s[start] != '.' && !isdigit(s[start]))) return false;

    bool dp = s[start] == '.';
    if (dp) { start++; }
    if (start == n || !isdigit(s[start])) return false;

    start = parse_digits(s, start);
    if (start == n) return true;

    if (dp && s[start] == '.') return false;
    if (s[start] == '.') { 
        dp = true;
        start++; 
        if (start == n) { return true; }//4.
    }
    if (start == n) return false;

    bool e = (s[start] == 'e' || s[start] == 'E');
    if (e) { 
        start++; 
        start = parse_sign(s, start);
    }
    if (start == n || !isdigit(s[start])) return false;

    start = parse_digits(s, start);
    if (start == n) return true;

    if (e && (e = (s[start] == 'e' || s[start] == 'E'))) return false;
    if (s[start] == 'e' || s[start] == 'E') { 
        start++; 
        start = parse_sign(s, start);
    }
    if (start == n || !isdigit(s[start])) return false;
    start = parse_digits(s, start);

    return start == n;
}

相关文章

网友评论

      本文标题:LeetCode #65 Valid Number

      本文链接:https://www.haomeiwen.com/subject/lfajlltx.html