python--剑指offer--中等--46. 把数字翻译成字符串
# 代码1 class Solution: def translateNum(self, num: int) -> int: s = str(num) a = b = 1 # b初始时表示dp[0], 不存在对应字符, 但dp[1]对应字符s[0] for i in range(2, len(s) + 1): a, b = (a + b if "10" <= s[i - 2:i] <= "25" else a), a return a
# 代码2 # 该代码与代码1的不同之处: 该代码的字符串的下标与dp的下标相同 class Solution: def translateNum(self, num: int) -> int: s = str(num) b, a = 1, 1 # b 初始时表示dp[-1],不存在对应的字符,但dp[0]对应字符s[0] for i in range(1, len(s)): b, a = a, a+b if 10 <= num[i-1:i+1] <= 25 else a return a
class Solution { public int translateNum(int num) { String s = String.valueOf(num); int a = 1, b = 1; for(int i = s.length() - 2; i > -1; i--) { String tmp = s.substring(i, i + 2); int c = tmp.compareTo("10") >= 0 && tmp.compareTo("25") <= 0 ? a + b : a; b = a; a = c; } return a; } }
class Solution: def translateNum(self, num: int) -> int: a = b = 1 y = num % 10 while num != 0: num //= 10 x = num % 10 a, b = (a + b if 10 <= 10 * x + y <= 25 else a), a y = x return a
上一篇:
IDEA上Java项目控制台中文乱码