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 Falsep = 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] += 1return digitsdigits[i] = 0return [1] + digits