劍指Offer 19表示數值的字串

2021-10-19 02:34:04 字數 1980 閱讀 4167

public static boolean isnumber(string s) catch (numberformatexception e)

// 排除特殊情況

為了通過面試 當然不能這麼寫哈哈哈思路是有限狀態自動機!按照字串從左到右的順序,定義以下 9 種狀態。

0.開始的空格

1.冪符號前的正負號

2.小數點前的數字

3.小數點、小數點後的數字

4.當小數點前為空格時,小數點、小數點後的數字

5.冪符號

6.冪符號後的正負號

7.冪符號後的數字

8.結尾的空格

理解透了 **其實很簡單

public static boolean isnumber(string s) },

new hashmap() },

new hashmap() },

new hashmap() },

new hashmap() },

new hashmap() },

new hashmap() },

new hashmap() },

new hashmap() }

};// 標記當前狀態

int p = 0;

// 用於數字、符號、冪符號轉換

char t;

for (char c: s.tochararray())else if (c == '+' || c == '-')else if (c == 'e' || c == 'e')

else if (c == '.' || c == ' ')else

if (!states[p].containskey(t))

p = (int) states[p].get(t);

}// 合法的結束狀態有 2, 3, 7, 8

下面這個思路也太棒了吧 而且很好理解

public static boolean isnumber(string s) 

//去掉頭尾空格

劍指Offer19 順時針列印矩陣

思路 可以模擬魔方逆時針旋轉的方法,一直做取出第一行的操作 例如 1 2 3 4 5 6 7 8 9 輸出並刪除第一行後,再進行一次逆時針旋轉,就變成 6 95 8 4 7繼續重複上述操作即可。coding utf 8 class solution matrix型別為二維列表,需要返回列表 def ...

劍指Offer 19 正規表示式匹配

之前做這個題的時候特別凌亂,但這次會好很多,把思路分享出來,以及邊界的確定 思路 我們用倆個索引來控制字串和模式串已經匹配到達的位置,index1和index2,這個問題就難在有 的位置,我們需要考慮下乙個位置為 時候怎麼處理 1.模式串的index2下乙個位置為 1 字串的index1位置與模式串...

劍指offer19 正規表示式匹配

2.如果第二位是 第一位如果匹配,則三種情況 有一種為true,則結果為true 3.其餘情況一位一位比較 class solution s,pattern都是字串 defmatch self,s,pattern write code hereif len s 0 andlen pattern 0 ...