劍指 Offer 20 表示數值的字串

2021-10-08 20:02:21 字數 1167 閱讀 5760

題目描述:

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100"、「5e2」、"-123"、「3.1416」、「0123"都表示數值,但"12e」、「1a3.14」、「1.2.3」、「±5」、"-1e-16"及"12e+5.4"都不是。

解題思路:

首先分析一下符合數值的字串模式,當字串遵循模式a[.[b]]|[e|ec]或者.b[e|ec],其中a和c都可以表示整數,也就是可以以』+『或者『-』開頭的0-9的數字串,b也是0-9的數字串,但是不能以』+'或者『-』開頭。使用numseen,dotseen,eseen來記錄遇到數字、點、e和e的情況。

當從頭開始遍歷字串時,有幾種情況:(1)當該字串為點時,判斷之前有沒有出現過點、e和e,如果有則不能表示數值,否則dotseen=true;(2)當該字串為e或者e時,判斷之前有沒有出現過數值、e和e,如果有則不能表示數值,否則eseen=true;同時將numseen置為false(因為之後要判斷是否出現數值);(3)如果是『-』和『+』,只有當是第乙個字元或者前乙個字元為e或者e的時候才符合數值的模式;(4)當該字元是數字則將numseen置為true。最後返回numseen

實現**:

public

boolean

isnumber

(string s)

else

if(ch ==

'e'|| ch ==

'e')

else

if(ch ==

'-'|| ch ==

'+')

else

return

false;}

return numseen;

}

劍指Offer 20 表示數值的字串

請實現乙個函式來判斷字串是否表示數值 包括整數和小數 例 字串 100 5e2 123 3.1416 1e 16 都表示數值,但 12e 1a3.14 1.2.3 5 12e 5.4 都不是。時間複雜度 o n 空間複雜度 o 1 def numeric strings s param s num ...

劍指Offer20 表示數值的字串

題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。考察的是 模式匹配的策略 的完整性 我們首先分析一下子可能是數值的字串的格式 在數值之前...

劍指offer 20 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如 字串 100 5e2 123 3.1416 和 1e 16 都表示數值 但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是 使用指標的指標 a.b e e c 對a b c 的判斷 class solution if ...