只有有出去的邊才能對應變換狀態,不然就會報錯。算法
例子:
設置初始節點爲0,接收節點爲1,當進行一系列的輸入,使得狀態機的狀態不斷變化,只要最後一個輸入使得狀態機處於接收節點,那麼就代表當前輸入能夠被狀態機接收。例如對應字符串」abaaa」, 從初始節點0開始,狀態機根據該字符串的輸入所造成的狀態變化序列爲:{0,1,0,1,0,1}。因爲最後狀態機處於狀態1,因此該字符串能夠被狀態機接收。若是輸入的字符串是:abbaa, 那麼狀態機的變化序列爲:{0,1,0,0,1,0}, 因爲最後狀態機處於非接收狀態,所以這個字符串被狀態機拒絕。
有限狀態自動機 本題講解數組
每次輸入都會引發狀態的改變或者不變。再次輸入一個值,狀態又會改變。,這種狀況就用限狀態自動機。函數
算法流程,首先定義一個狀態數組,而後每一個狀態定義一個HashMap,其中輸入鍵值對,鍵對應輸入的字符,值對應輸入這個字符以後跳轉到的新狀態,而後把狀態的HashMap放到狀態數組裏。
注意spa
private Map<Character,Character> map = new HashMap<Character,Character>(){ { put('(',')'); put('{','}'); put('[',']'); } };
這個是首先把字符串兩端的空格符、製表符、換行符用trim函數刪除,而後裏面就只剩下數字+-.和e了,若是裏面還有空格符的話那也不符合數值的題目要求了,就能夠直接return false.net