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
经验分享 程序员 微信小程序 职场和发展