劍指 Offer 20 表示數值的字串

2021-10-24 05:10:27 字數 1085 閱讀 1395

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

注意隱藏規則:

其實就是狀態的定義以及狀態轉移的考慮,注意把所有狀態都考慮進去就可以了。

狀態:

字元型別:

結束時只能為狀態3、4、6、9、10,否則返回false。

class

solution

;enum chartype

; chartype tochartype

(const

char

& c)

else

if(c ==

'.')

else

if(c ==

' ')

else

if(c ==

'+'|| c ==

'-')

else

if(c ==

'e'|| c ==

'e')

else

}bool

isnumber

(string s),,

,,}}

,,,}

},,,

,,}}

,,,,

}},,

}},,

,,}}

,,,}

},,}

},,,

}},,

}},}

;int n = s.

size()

; state st = state_initial;

for(

int i =

0; i < n; i++

)else

}return st == state_integer || st == state_point || st == state_fraction || st == state_exp_integer || st == state_end;}}

;

劍指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 ...