1. 有效數字
給定一個字串 s ,返回 s 是否是一個 有效數字。
一般的,一個 有效數字 可以用以下的規則之一定義:
- 一個 整數 後面跟著一個 可選指數。
- 一個 十進位制數 後面跟著一個 可選指數。
一個 整數 定義為一個 可選符號 '-' 或 '+' 後面跟著 數字。
一個 十進位制數 定義為一個 可選符號 '-' 或 '+' 後面跟著下述規則:
- 數字 後跟著一個 小數點 .。
- 數字 後跟著一個 小數點 . 再跟著 數位。
- 一個 小數點 . 後跟著 數位。
指數 定義為指數符號 'e' 或 'E',後面跟著一個 整數。
數字 定義為一個或多個數位。
class Solution:
def isNumber(self, s: str) -> bool:
states = [
{ ' ': 0, 's': 1, 'd': 2, '.': 4 },
{ 'd': 2, '.': 4 } ,
{ 'd': 2, '.': 3, 'e': 5, ' ': 8 },
{ 'd': 3, 'e': 5, ' ': 8 },
{ 'd': 3 },
{ 's': 6, 'd': 7 },
{ 'd': 7 },
{ 'd': 7, ' ': 8 },
{ ' ': 8 }
]
p = 0
for c in s:
if '0' <= c <= '9': t = 'd'
elif c in "+-": t = 's'
elif c in "eE": t = 'e'
elif c in ". ": t = c
else: t = '?'
if t not in states[p]: return False
p = states[p][t]
return p in (2, 3, 7, 8)
2. 加一
給定一個由 整數 組成的 非空 陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
n = len(digits)
for i in range(n - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + digits