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

파이썬에서 두 문자열에서 어휘적으로 최소 문자열을 만드는 프로그램

<시간/>

두 개의 문자열이 있다고 가정합니다. 우리는 그 문자열에서 어휘적으로 최소 문자열을 만들고 싶습니다. 문자열을 만들기 위해 두 문자열의 첫 번째 문자를 비교하고 문자열 중 하나에서 어휘적으로 더 작은 문자를 추출합니다. 넥타이의 경우 문자는 동일합니다. 첫 번째 문자열에서 문자를 추출합니다. 두 문자열이 모두 비어 있을 때까지 이 프로세스를 반복합니다. 생성된 최소 문자열이 반환되어야 합니다.

따라서 입력이 input_1 ='TUTORIALS', input_2 ='POINT'인 경우 출력은 POINTTUTORIALS

가 됩니다.

두 문자열을 비교하면 다음을 단계별로 얻습니다.

TUTORIALS POINT
TUTORIALS OINT = P
TUTORIALS INT = PO
TUTORIALS NT = POI
TUTORIALS T = POIN
TUTORIALS = POINT

문자열 중 하나가 비어 있으므로 이제 전체 첫 번째 문자열이 결과 최소 문자열에 배치됩니다. 따라서 최종 문자열은 POINTTUTORIALS입니다.

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

  • 입력_1 :=입력_1 + "z"
  • 입력_2 :=입력_2 + "z"
  • temp_1 :=0
  • temp_2 :=0
  • res_str :=빈 문자열
  • temp_1
  • input_1[인덱스 temp_1에서 문자열 끝까지]
  • res_str :=res_str + input_1[temp_1]
  • temp_1 :=temp_1 + 1
  • 그렇지 않으면
    • res_str :=res_str + input_2[temp_2]
    • temp_2 :=temp_2 + 1
  • res_str :=res_str[인덱스 0에서 문자열의 두 번째 마지막 요소까지]
  • temp_1 <(input_1)의 길이이면
    • res_str :=res_str + input_1[인덱스 temp_1에서 문자열의 두 번째 마지막 요소까지]
  • temp_2 <(input_2)의 길이이면
    • res_str :=res_str + input_2[인덱스 temp_2에서 문자열의 두 번째 마지막 요소까지]
  • res_str 반환
  • 예시

    이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    def solve(input_1, input_2):
       input_1 += "z"
       input_2 += "z"
       temp_1 = 0
       temp_2 = 0
       res_str = ""
       while temp_1 < len(input_1) and temp_2 < len(input_2):
          if input_1[temp_1:] < input_2[temp_2:]:
             res_str += input_1[temp_1]
             temp_1 += 1
          else:
             res_str += input_2[temp_2]
             temp_2 += 1
       res_str = res_str[:-1]
       if temp_1 < len(input_1):
          res_str += input_1[temp_1:-1]
       if temp_2 < len(input_2):
          res_str += input_2[temp_2:-1]
       return res_str
    
    print(solve('TUTORIALS', 'POINT'))

    입력

    'TUTORIALS', 'POINT'

    출력

    POINTTUTORIALS