python----최장 회신 서브열의 폭력 해법 및 동적 기획 해법
def longestPalindString(ss):
palindString=""
max_len=0
if len(ss)==1:
return ss
for i in range(len(ss)):
for j in range(i+1,len(ss)):
is_palind=True
for k in range(i,int((i+j)//2)+1):
if ss[k]!=ss[j-k+i]:
is_palind=False
break
if is_palind and (j-i+1)>max_len:
max_len=j-i+1
palindString=ss[i:j+1]
if palindString=="":
palindString=ss[0]
return palindString
if __name__=="__main__":
ss="babcbad"
print(longestPalindString(ss))
두 번째: 동적 기획 해법, 시간 복잡도 o(n^2), 공간 복잡도 o(n^2)는 가장 좋은 문제를 추구한다. 먼저 동적 기획의 세 가지 요소를 생각해 본다. 그것이 바로 최우선 서브구조, 경계, 상태 이동 방정식이다. 그 중에서 상태 이동 방정식: f(i, j):s[i]=s[j]i-j<=1f(i, j):s[i]=s[i]=s[j] and f(i+1, j-1)j-i>1이다. 그 중에서 f(i, j)는 s[i:j:j+1]의 회문 직렬 여부를 나타낸다.
def longestPalindString(s):
k=len(s)
matrix=[[0 for i in range(k)] for j in range(k)]
longestString=""
longestLen=0
for j in range(0,k):
for i in range(0,j+1):
if j-i<=1:
if s[i]==s[j]:
matrix[i][j]=1
if longestLen
세 번째 방법: 동적 기획 알고리즘의 최적화 시간 복잡도는 변하지 않고 공간 복잡도를 o(2n)로 낮추어 nlist로 j를 저장하는 상황에서 모든 하위 문자열이 하위 문자열의 로고인지olist로 j-1을 저장하는 상황에서 모든 하위 문자열이 하위 문자열의 로고인지 여부
def longestPalindString(s):
k = len(s)
olist = [0] * k # n ,
nList = [0] * k #
logestSubStr = ""
logestLen = 0
for j in range(0, k):
for i in range(0, j + 1):
if j - i <= 1:
if s[i] == s[j]:
nList[i] = 1 # j , i
len_t = j - i + 1
if logestLen < len_t: #
logestSubStr = s[i:j + 1]
logestLen = len_t
else:
if s[i] == s[j] and olist[i + 1]: # j-i>1 , s[i] s[j], j-1 , i+1
nList[i] = 1 # j , i
len_t = j - i + 1
if logestLen < len_t:
logestSubStr = s[i:j + 1]
logestLen = len_t
olist = nList #
nList = [0] * k #
return logestSubStr
if __name__=="__main__":
ss="babcbad"
print(longestPalindString(ss))
네 번째 해법:
def helper(ss,l,r):
while l>=0 and rlen(res):
res=temp
temp=helper(ss,i,i+1)
if len(temp)>len(res):
res=temp
return res
if __name__=="__main__":
ss="abddbc"
result=longgestCommonStr(ss)
print(result)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python은 두 갈래 트리의 앞뒤 순서를 차원 순서대로 반복합니다. 귀속과 비귀속Reference https://blog.yangx.site/2016/07/22/Python-binary-tree-traverse/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.