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

파이썬에서 문자열을 트리밍하여 만들 수 있는 회문의 가능한 수를 찾는 프로그램

<시간/>

문자열 s가 있다고 가정하고 s의 왼쪽과 오른쪽을 잘라 회문을 얻을 수 있는 방법의 수를 찾아야 합니다.

따라서 입력이 s ="momo"와 같으면 출력은 6이 됩니다. ["mom", "omo", "o", "o", "m", "m", " 오")

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

  • expand() 함수를 정의합니다. 이것은 i, j, s가 걸립니다

  • c :=0

  • i>=0 및 j

    • 나는 :=나는 − 1, j :=j + 1

    • c :=c + 1

  • 반환 c

  • 기본 방법에서 다음을 수행하십시오.

  • c :=0

  • 범위 0에서 s까지의 i에 대해

    • c :=c + 확장(i, i, s)

    • c :=c + 확장(i, i + 1, s)

  • 반환 c

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

예시

def expand(i, j, s):
   c = 0
   while i >= 0 and j < len(s) and s[i] == s[j]:
      i −= 1
      j += 1
      c += 1
   return c
class Solution:
   def solve(self, s):
      c = 0
      for i in range(len(s)):
         c += expand(i, i, s)
         c += expand(i, i + 1, s)
      return c
ob = Solution()
s = "momo"
print(ob.solve(s))

입력

"momo"

출력

6