문자열 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