Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 전화 키패드를 사용하여 입력 가능한 모든 문자열을 찾는 프로그램

<시간/>

2-9 사이의 숫자를 포함하는 문자열이 있다고 가정합니다. 숫자가 생성할 수 있는 모든 가능한 문자 조합을 찾아야 합니다. 전화 버튼과 마찬가지로 숫자를 문자로 매핑하는 방법이 아래에 나와 있습니다. 1은 일부 문자를 매핑하지만 문자는 매핑하지 않습니다.

1
2
b c
3
디에프
4
나는
5
j k 엘
6
아니오
7
피 q r s
8
유 v
9
wxyz
*
0
#

예를 들어 주어진 문자열이 "49"이면 가능한 문자열은 ['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz ', 'iw', 'ix', 'iy', 'iz']

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • 재귀적으로 문제를 해결하기 위해 solve라는 배열을 정의합니다.
  • solve 메소드는 숫자, 문자, 결과, current_string 및 current_level을 사용합니다. 함수는 다음과 같습니다.
  • current_level =자릿수 길이인 경우 결과 뒤에 현재 문자열을 추가하고 반환
  • 문자의 모든 문자 i에 대해[숫자[현재_레벨]]
    • 해결 수행(숫자, 문자, 결과, current_string + i, current_level + 1)
  • 실제 기능은 다음과 같습니다.
  • 숫자 길이가 0이면 빈 목록을 반환합니다.
  • 숫자와 해당 문자를 문자열로 포함하는 하나의 지도 정의
  • 결과:=빈 목록
  • 해결 호출(숫자, 문자, 결과, "", 0)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

class Solution(object):
   def letterCombinations(self, digits):
      if len(digits) == 0:
         return []

      characters = {2:"abc",3:"def",4:"ghi",5:"jkl",6:"mno",7:"pqrs",8:"tuv",9:"wxyz"}
      result = []
      self.solve(digits,characters,result)
      return result
   def solve(self, digits, characters, result, current_string="",current_level = 0):
      if current_level == len(digits):
         result.append(current_string)
      return
   for i in characters[int(digits[current_level])]:
self.solve(digits,characters,result,current_string+i,current_level+1)

ob1 = Solution()
print(ob1.letterCombinations("49"))

입력

"49"

출력

['gw', 'gx', 'gy', 'gz', 'hw', 'hx', 'hy', 'hz', 'iw', 'ix', 'iy', 'iz']