class Solution {
public:
int translateNum(int num) {
}
};
剑指 Offer 46. 把数字翻译成字符串
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
提示:
0 <= num < 231
原站题解
python3 解法, 执行用时: 44 ms, 内存消耗: 14.9 MB, 提交时间: 2022-11-13 14:03:32
class Solution: def translateNum(self, num: int) -> int: a = b = 1 y = num % 10 while num != 0: num //= 10 x = num % 10 tmp = 10 * x + y c = a + b if 10 <= tmp <= 25 else a a, b = c, a y = x return a
python3 解法, 执行用时: 44 ms, 内存消耗: 14.9 MB, 提交时间: 2022-11-13 14:03:01
class Solution: def translateNum(self, num: int) -> int: s = str(num) a = b = 1 for i in range(len(s) - 2, -1, -1): a, b = (a + b if "10" <= s[i:i + 2] <= "25" else a), a return a
python3 解法, 执行用时: 36 ms, 内存消耗: 14.8 MB, 提交时间: 2022-11-13 14:01:50
class Solution: def translateNum(self, num: int) -> int: src = str(num) p, q, r = 0, 0, 1 for i in range(len(src)): p, q, r = q, r, 0 r += q if i == 0: continue pre = src[i-1:i+1] if pre <= "25" and pre >= "10": r += p return r
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2022-11-13 13:59:34
func translateNum(num int) int { src := strconv.Itoa(num) p, q, r := 0, 0, 1 for i := 0; i < len(src); i++ { p, q, r = q, r, 0 r += q if i == 0 { continue } pre := src[i-1:i+1] if pre <= "25" && pre >= "10" { r += p } } return r }