leetcode 면접문제 46 숫자를 문자열로 번역

문제풀이 사고방식: 동적 기획, (1)num의 모든 숫자를 얻어 낮은 위치에서 높은 위치까지nums로 저장(2)낮은 위치에서 높은 위치까지 순서대로 해답을 구하고,상태 전환 방정식은 다음과 같다. d p [i] = {d p [i -1] + d p [i -2] 10 ≤(n u m s [i] = 10 + n u m s [i -1) < 26d p [i - 1] o t h e e e h h h h e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e =\left\{{{\begin {array} {{{{\bedp[i]={dp[i-3-1]+dp[i-3-2]dp[i-3-1]10≤(nums[i]∗10+nums[i-3-1)<26othersdp[i] 낮음(i+1)위가 표시할 수 있는 문자열의 개수 코드는 다음과 같다.
class Solution:
   def translateNum(self, num: int) -> int:
       if num < 10:
           return 1
       nums = []
       while(num):
           nums.append(num % 10)
           num //= 10
       size = len(nums)
       a1, a2 = 1, 1
       for i in range(1,size):
           if 10 <= (nums[i]*10 + nums[i-1]) < 26:
               tmp = a1 + a2
           else:
               tmp = a1
           a2 = a1
           a1 = tmp
       return a1

좋은 웹페이지 즐겨찾기