劍指Offer 資料結構 20 表示數值的字串

2021-10-21 20:44:38 字數 1560 閱讀 8938

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

這種問題在實際開發過程中一般都不會有太大問題,因為有正規表示式來實現,但是正規表示式如何實現的呢?這就是這個題目在實際生產過程中解決的問題。

這個題目有很多種情況,比如+-號只能在首位和冪符號後面,e符號只能處於中間位置......有很多種情況需要判斷,比較麻煩,有沒有什麼其他方法來解決這種情況很多的判斷處理呢?

答案是肯定的,那就是大名鼎鼎的「確定有限狀態自動機」。演算法原理請參考《力扣官方題解》。

用 當前處理到字串的哪一部分 當作狀態的的表述,找出所有狀態,然後確定出初始狀態和接收狀態的集合。

然後定義轉移規則,將自動轉移過程以**的方式表示出來:

小結:

這個題目讓我們學會使用狀態自動機的方式解決邏輯條件很多的問題,這種方式既能夠窮盡各種條件和邏輯轉換,又能很好的進行**維護和擴充套件,是實際開發中很好的一種演算法思想,也特別適合底層的嵌入式開發,也可能常見於面試中。

資料結構(劍指offer)(堆疊)(python)

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 思路 用空間換時間,用乙個輔助棧記錄當前棧中的最小值。輔助棧元素個數和資料棧保持一樣的數目。例如一次壓入資料棧數字串行為 3,2,4,1,5 那麼一次壓入輔助棧的為 3,2,2,1,1 當每次壓入資料棧...

劍指offer 五) 資料結構 棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 程式 思路 利用乙個輔助棧來存放最小值 棧 3,4,2,5,1 輔助棧 3,3,2,2,1 每入棧一次,就與輔助棧頂比較大小,如果小就入棧,如果大就入棧當前的輔助棧頂 當出棧時,輔助棧也要出棧 這種做法...

劍指offer 資料結構類題目()

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。入隊時資料存到stackin,出隊時資料從stackout彈出。執行入隊操作時,資料源源不斷的壓入棧stackin。執行出隊操作時,stackout為空,則把stackin裡的資料全部彈出壓倒stackout中,當st...