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

파이썬에서 주어진 문자열에서 좋은 문자열을 찾는 프로그램

<시간/>

소문자와 대문자가 있는 문자열 s가 있다고 가정합니다. 우리는 문자열이 두 개의 인접한 문자 s[i]와 s[i + 1]을 가지지 않는 좋은 문자열이라고 생각할 것입니다. 여기서 -

  • 0 <=i <=s의 크기 - 2

  • s[i]는 소문자이고 s[i + 1]은 동일한 문자이지만 대문자 또는 그 반대입니다.

문자열을 좋은 문자열로 변환하기 위해 문자열을 나쁘게 만드는 두 개의 인접한 문자를 선택하고 제거할 수 있습니다. 문자열이 좋아질 때까지 이 프로세스를 계속할 것입니다(빈 문자열도 좋은 문자열일 수 있음). 문자열을 잘 만든 후에 찾아야 합니다.

따라서 입력이 s ="popPpulaBbr"과 같으면 출력은 "popular"가 됩니다. 왜냐하면 처음에는 "p P 를 삭제하기 때문입니다. " 또는 "Pp " 및 "Bb"를 삭제합니다.

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

  • res :=새 목록

  • s의 각 문자 ch에 대해

    • res가 비어 있지 않고 res의 마지막 요소가 위 또는 아래의 경우에 ch와 같으면

      • res에서 마지막 요소 삭제

    • 그렇지 않으면

      • res의 끝에 ch 삽입

  • res에 있는 각 요소를 결합하고 반환

예제(파이썬)

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

def solve(s):
   res = []
   for ch in s:
      if res and res[-1] != ch and res[-1].lower() == ch.lower():
         res.pop()
      else:
         res.append(ch)
   return ''.join(res)

s = "popPpulaBbr"
print(solve(s))

입력

"popPpulaBbr"

출력

popular