字符串是否可以解釋爲十進制數字

 

驗證給定的字符串是否可以解釋爲十進制數字。

例如:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3   " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false

說明: 我們有意將問題陳述地比較模糊。在實現代碼之前,你應當事先思考所有可能的情況。這裏給出一份可能存在於有效十進制數字中的字符列表:

  • 數字 0-9
  • 指數 - "e"
  • 正/負號 - "+"/"-"
  • 小數點 - "."

當然,在輸入中,這些字符的上下文也很重要。

 

 

 

 

 

 

 

 

class Solution {

public:

    bool isNumber(string s) {

        int n = s.length();

        if(n == 0)

            return false;

        int i = 0;

        while(s[i] == ' ') 

            i++;

        if(s[i] == '+' || s[i] == '-')

            i++;

        int numOfP = 0,numOfDig = 0;

        for(;s[i] >= '0' && s[i] <='9' || s[i] == '.';i++){

            if(s[i] == '.')

                numOfP++;

            else

                numOfDig++;

        }

        if(numOfP > 1 || numOfDig < 1)

            return false;

        if(s[i] == 'e'){

            i++;

            if(s[i] == '+' || s[i] == '-')

                i++;

            numOfDig = 0;

            for(; s[i] >= '0' && s[i] <= '9'; i++)

                numOfDig++;

    

            if(numOfDig < 1)

                return false;

        }

        for(; s[i] == ' ';i++);  // 跳過空格

        return s[i] == '\0'; //是否到字符串末尾

 

    }

};

};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章