Validate if a given string is numeric.

Example

"0" => true

" 0.1 " => true

"abc" => false

"1 a" => false

"2e10" => true

 

LeetCode上的原题,请参见我之前的博客Valid Number

 

class Solution {
public:
    /**
     * @param s the string that represents a number
     * @return whether the string is a valid number
     */
    bool isNumber(string& s) {
        bool num = false, numAfterE = true, dot = false, exp = false, sign = false;
        int n = s.size();
        for (int i = 0; i < n; ++i) {
            if (s[i] == ' ') {
                if (i < n - 1 && s[i + 1] != ' ' && (num || dot || exp || sign)) return false;
            } else if (s[i] == '+' || s[i] == '-') {
                if (i > 0 && s[i - 1] != 'e' && s[i - 1] != ' ') return false;
                sign = true;
            } else if (s[i] >= '0' && s[i] <= '9') {
                num = true;
                numAfterE = true;
            } else if (s[i] == '.') {
                if (dot || exp) return false;
                dot = true;
            } else if (s[i] == 'e') {
                if (exp || !num) return false;
                exp = true;
                numAfterE = false;
            } else return false;
        }
        return num && numAfterE;
    }
};

 

相关文章:

  • 2021-08-20
  • 2021-10-28
  • 2022-12-23
  • 2021-12-12
  • 2021-10-03
  • 2021-11-10
  • 2021-07-25
  • 2021-08-06
猜你喜欢
  • 2021-06-22
  • 2021-10-31
  • 2021-09-25
  • 2021-07-15
  • 2021-05-22
  • 2021-08-14
  • 2022-12-23
相关资源
相似解决方案