驗證給定的字串是否可以解釋為十進位制數字。
例如:"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"
正/負號 - "+"/"-"
小數點 - "."
當然,在輸入中,這些字元的上下文也很重要。
更新於 2015-02-10:
c++函式的形式已經更新了。如果你仍然看見你的函式接收 const char * 型別的引數,過載按鈕重置你的**。
//自動機 狀態轉移圖 條件 狀態太多太容易出錯了
//注意點
//1 table初始化時括號的位置
//2 返回true的結果可能是多個,不唯一
//3 前後空格情況:" 1.2e-3 " true
//4 小數點前後有沒有數字情況: " -.2e-3 " true " +1.e-3 " true ".e-3 " false
//5 用int代替string表示狀態名稱應該可以更快
//乙個究極完整的數字裡面的可以分為 sa.becs or sa.ecs or s.becs
//s: 連續空格
//a:可帶符號數
//b:無符號數字
//c:可帶符號數
class solution },
},},
},},
},},
},},
},},
};
public:
bool isnumber(string s)
int getindex(char c){
if(isdigit(c))return 0;
if(c=='+'||c=='-')return 1;
if(c=='.')return 2;
if(c=='e')return 3;
if(c==' ')return 4;
return 5;
//方法二:一遍掃瞄 正規表示式
//去頭空格
//有無符號
//連續數字.e
//.連續數字e
//連續數字.連續數字e
//有無符號
//連續數字
//去尾空格
65 有效數字
驗證給定的字串是否為數字。例如 0 true 0.1 true abc false 1 a false 2e10 true 說明 我們有意將問題陳述地比較模糊。在實現 之前,你應當事先思考所有可能的情況。更新於 2015 02 10 c 函式的形式已經更新了。如果你仍然看見你的函式接收 const ...
65 有效數字
題目描述 有效數字 按順序 可以分成以下幾個部分 乙個小數或者整數 可選 乙個 e 或 e 後面跟著乙個整數 小數 按順序 可以分成以下幾個部分 可選 乙個符號字元 或 下述格式之一 至少一位數字,後面跟著乙個點 至少一位數字,後面跟著乙個點 後面再跟著至少一位數字 乙個點 後面跟著至少一位數字 整...
65 有效數字
有效數字 按順序 可以分成以下幾個部分 乙個 小數 或者 整數 可選 乙個 e 或 e 後面跟著乙個 整數 小數 按順序 可以分成以下幾個部分 可選 乙個符號字元 或 下述格式之一 至少一位數字,後面跟著乙個點 至少一位數字,後面跟著乙個點 後面再跟著至少一位數字 乙個點 後面跟著至少一位數字 整數...