題目描述:
請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。
例如,字串"+100"
,"5e2"
,"-123"
,"3.1416"
和"-1e-16"
都表示數值。
但是"12e"
,"1a3.14"
,"1.2.3"
,"+-5"
和"12e+4.3"
都不是。
注意:
小數可以沒有整數部分,例如.123等於0.123;
小數點後面可以沒有數字,例如233.等於233.0;
小數點前面和後面可以有數字,例如233.666;
當e或e前面沒有數字時,整個字串不能表示數字,例如.e1、e1;
當e或e後面沒有整數時,整個字串不能表示數字,例如12e、12e+5.4;
樣例:
輸入: "0"
輸出: true
分析:
本題是字串的小模擬題,考察理解能力和細心度。
根據題目要求:字串中只能出現數字,加減號,小數點以及大小寫e。
對於加減號而言:
前面不能是數字,比如1+1;
如果沒有e,則字串中至多出現一次加減號;
加減號只能出現在字串首位或者e的後一位;
幾種特殊的情況:如-.123是合法的,單獨的+,-是不合法的。
對於小數點而言:至多出現一次,而且小數點前後至少有一邊是數字;e的右邊不能出現小數點。
對於e而言:至多出現一次;左邊一位可以是.或者數字;右邊一位可以是數字,如果是正負號的話,那麼右邊第二位一定要是數。
我們採用標誌變數的辦法來解決各個符合出現的次數,如果出現正負號,ab置為true,出現.,po置為true,出現e,he置為true。一旦某符號出現了一次,再出現就要返回false。當然,出現e的時候,需要將ab置為false,po置為true。
class solution
else if(s[p] == '.')
else if(s[p] == 'e' || s[p] == 'e')
if(!he) return false;
ab = false;
po = true;
}else
p++;
}return true;
}};
劍 表示數值的字元
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。表示數值的字串遵循如下模式 sign integral digits fractional d...
表示數值的字串
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路 簡單的判斷 class solution int i 0 if string ...
表示數值的字串
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。解題思路 1.判斷運算符號的位置是否正確。2.判斷小數點出現的次數。3.判斷e的位置...