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