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

Python에서 회문 부분 문자열의 수를 계산하는 프로그램

<시간/>

문자열 s가 있다고 가정하고 s에서 회문 부분 문자열의 수를 찾아야 합니다.

따라서 입력이 s ="level"과 같으면 회문 하위 문자열이 ["l","e","v","e","l","eve"이므로 출력은 7이 됩니다. ,"레벨"]

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

  • check_palindrome() 함수를 정의합니다. 이것은 문자열, 왼쪽, 오른쪽이 필요합니다.
  • ans :=0
  • 왼쪽>=0이고 오른쪽
  • s[left]가 s[right]와 같으면
    • ans :=ans + 1
    • 왼쪽 :=왼쪽 - 1
    • 오른쪽 :=오른쪽 + 1
  • 그렇지 않으면
    • 반환
  • 반환
  • 메인 방법에서 다음을 수행하십시오. -
  • ans :=0
  • 0에서 s 크기 범위의 char_index에 대해
    • ans :=ans + check_palindrome(s, char_index - 1, char_index + 1)
    • ans :=ans + check_palindrome(s, char_index, char_index + 1)
  • 반환(ans) + s의 크기
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시

    class Solution:
       def solve(self, s):
          def check_palindrome(string, left, right):
             ans = 0
             while left >= 0 and right < len(s):
                if s[left] == s[right]:
                   ans += 1
                   left -= 1
                   right += 1
                else:
                   return ans
             return ans
          ans = 0
          for char_index in range(len(s)):
             ans += check_palindrome(s, char_index - 1, char_index + 1)
             ans += check_palindrome(s, char_index, char_index + 1)
          return (ans) + len(s)
    ob = Solution()
    print(ob.solve("level"))

    입력

    "level"

    출력

    7