AcWing 31 表示數值的字串

2021-09-12 01:57:33 字數 1259 閱讀 4240

題目描述:

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。

例如,字串"+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的位置...