剑指 Offer 20. 表示数值的字符串

class Solution {
    int i = 0;
    public boolean isNumber(String s) {
        s = s.trim();
        int n = s.length();
        if(n == 0) return false;
        boolean b = scanInteger(s);
        if(i<n&& s.charAt(i) == '.'){
            i++;
            b = scanUnsignedInteger(s) || b;
        }
        if(i<n && s.charAt(i) == 'e'){
            i++;
            b = b&&scanInteger(s);
        }
        return b && i == n;
    }

    private boolean scanInteger(String s) {
        if(i<s.length() &&(s.charAt(i) =='+' || s.charAt(i) == '-')){
            i++;
        }
        return scanUnsignedInteger(s);
    }

    private boolean scanUnsignedInteger(String s) {
        int k = i;
        while (i<s.length() && s.charAt(i)>='0' && s.charAt(i)<='9'){
            i++;
        }
        return i>k;
    }
}

 

posted @ 2020-08-10 15:47  欣姐姐  阅读(104)  评论(0编辑  收藏  举报