1. 程式人生 > 其它 >初識Vue 3.0 —— v-if/v-else/v-else-if/v-show條件渲染

初識Vue 3.0 —— v-if/v-else/v-else-if/v-show條件渲染

技術標籤:codingpython演算法資料結構

文章目錄


20. 表示數值的字串

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

思路:構建狀態機

有5種字元:

  • 空格 「 」
  • 數字「 0—9 」
  • 正負號 「 + - 」
  • 小數點 「 …」
  • 冪符號「 eE」

先寫出一種包含所有情況的最全的情況:+100.3e-16,按照字串從左到右的順序,定義9 種狀態:

0:開始的空格
1:冪符號前的正負號
2:小數點前的數字
3:小數點、小數點後的數字
4: 當小數點前為空格時,小數點、小數點後的數字
5 :冪符號
6 :冪符號後的正負號
7 :冪符號後的數字
8: 結尾的空格

+/-0-9.e/Eotherblank
0124-1-10
1-124-1-1-1
2-1235-18
3-13-15-18
4-13-1-1-1-1
567-1-1-1-1
6-17-1-1-1-1
7-17-1-1-18
8-1-1-1-1-18
class Solution
: def isNumber(self, s: str) -> bool: if not s:return False transTable = [ [1,2,4,-1,-1,0], [-1,2,4,-1,-1,-1], [-1,2,3,5,-1,8], [-1,3,-1,5,-1,8], [-1,3,-1,-1,-1,-1], [6,7,-1,-1,-1,-1], [-1,7,-1
,-1,-1,-1], [-1,7,-1,-1,-1,8], [-1,-1,-1,-1,-1,8] ] cols = { "sign":0, "number":1, ".":2, "exp":3, "other":4, "blank":5 } def get_col(c): if c.isdigit():return 'number' elif c in {'+','-'}:return 'sign' elif c == '.':return '.' elif c in {'E','e'}:return 'exp' elif c == ' ':return 'blank' else:return 'other' legal_state = [1,2,3,4,5,8,6,7] # 將非法的終止狀態剔除 legal_state.remove(1) legal_state.remove(4) legal_state.remove(5) legal_state.remove(6) state = 0 if len(s)==1: return s.isdigit() for c in s: state = transTable[state][cols[get_col(c)]] if state == -1:return False return True if state in legal_state else False

補充練習
1:LC65有效數字(與本題完全相同)
2:LC8(字串轉換整數 (atoi))
3:LC393UTF-8 編碼驗證


38. 字串的排列