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

Python에서 단일 회전 후 가장 긴 회문 부분 문자열의 길이를 찾는 프로그램


문자열 s가 있다고 가정해 보겠습니다. 이 문자열은 어느 지점에서나 정확히 한 번 회전할 수 있습니다. 이 작업을 수행하여 얻을 수 있는 가장 긴 회문 부분 문자열의 길이를 찾아야 합니다.

따라서 입력이 s ="elklev"와 같으면 출력은 7이 됩니다. "el"과 "klev" 사이를 회전하여 "levelk"를 얻을 수 있기 때문입니다. 따라서 여기에서 가장 긴 회문 부분 문자열 길이는 5입니다.

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

  • s2 :=s를 두 번 연결

  • max_len :=0

  • 범위 0에서 s − 1까지의 x에 대해 다음을 수행합니다.

    • 범위 0에서 s까지의 y에 대해 수행

      • temp :=s2[인덱스 x에서 x + y까지]

      • temp가 회문이고 temp> max_len의 크기인 경우

        • max_len :=임시 크기

  • max_len 반환

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

예시

class Solution:
   def solve(self, s):
      s2 = 2 * s
      max_len = 0
      for x in range(len(s)):
         for y in range(len(s) + 1):
            temp = s2[x : x + y]
            if temp == temp[::−1] and len(temp) > max_len:
               max_len = len(temp)
      return max_len
ob = Solution()
s = "elklev"
print(ob.solve(s))

입력

"elklev"

출력

5