[LeetCode] 0091. 디코드 방법

디코드 방법

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간


보낸 편지가 담긴 메시지 AZ 될 수 있다 인코딩된 다음 매핑을 사용하여 숫자로 변환합니다.

'A' -> "1" 'B' -> "2" ... 'Z' -> "26"

에게 풀다 인코딩된 메시지의 경우 모든 숫자를 그룹화한 다음 위의 매핑과 반대되는 방법을 사용하여 다시 문자로 매핑해야 합니다(예: 여러 가지 방법이 있을 수 있음). "11106" 다음과 같이 매핑될 수 있습니다.

  • "AAJF" 그룹화와 함께 (1 1 10 6)
  • "KJF" 그룹화와 함께 (11 10 6)

그룹화에 유의하세요. (1 11 06) 때문에 유효하지 않습니다 "06" 에 매핑할 수 없습니다. '에프' ~부터 "6" 와는 다르다 "06".

문자열이 주어지면 에스 숫자만 포함하면 반환 그만큼 숫자 방법의 풀다 그것.

테스트 케이스는 답변이 다음에 적합하도록 생성됩니다. 32비트 정수.

 

예시 1:

입력: s = "12"
산출: 2
설명: "12"는 "AB"(1 2) 또는 "L"(12)로 디코딩될 수 있습니다.

예 2:

입력: s = "226"
산출: 3
설명: "226"은 "BZ"(2 26), "VF"(22 6) 또는 "BBF"(2 2 6)로 디코딩될 수 있습니다.

예시 3:

입력: s = "06"
산출: 0
설명: 앞에 0이 있기 때문에 "06"을 "F"에 매핑할 수 없습니다("6"은 "06"과 다름).

 

제약:

  • 1 <= s.길이 <= 100
  • 에스 숫자만 포함하며 앞에 0이 포함될 수 있습니다.

파이썬

				
					# 시간 복잡도: O(n) # 공간 복잡도: O(n) from functools import lru_cache class 해결책: @lru_cache(None) def recursiveWithMemo(self, index: int, s: str) -> int: if index == len (s): s[index] == '0'인 경우 1을 반환합니다. index == len(s) - 1: 1을 반환합니다. 대답 = self.recursiveWithMemo(index + 1, s) if int(s[index : index + 2]) <= 26: 답변 += self.recursiveWithMemo(index + 2, s) 답변 반환 def numDecodings(self, s: str) -> int: return self.recursiveWithMemo(0, s) s = " 12" 인쇄(솔루션().numDecodings(s))
				
			
ko_KR한국어