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项目控制台中文乱码
