문제

당신은 주어진 문자열 S 를 포함하는 소문자는 영어 자입니다.를 찾을 필요가 길이의 가장 큰 시퀀스의 S 을 만족시키는 다음과 같은 패턴:X1,X2,X3...Xn,Xn,...X3,X2,X1 는 시는 일부의 문자 S.유일한 제약은 없다는 것에 인접한 문자해야하는 경우를 제외하고 동일 Xn,그 사이입니다!= ×(I+1)모든 1<=i< n

입력:문자열:S
출력:정수:2n
제약:1<=|S|<=10^3

샘플 입력 1:"acdbdea"
샘플 출력 1:4
설명:"다"가장 긴 시퀀스는 다음 지정된 패턴이다.

샘플 입력 2:"abbacdeedc"
샘플 출력이 2:6
설명:"cdeedc"가장 긴 시퀀스는 다음 지정된 패턴이다.

샘플 입력 3:"즐긴다"
샘플 출력 3:0
설명:No 서브 다음과 같이 주어진 패턴이다.


이 질문에서 요구하는 코딩 인터뷰는 방법을 해결합니다.내가 이해하는 방법을 찾기 위해 가장 긴 회문 시퀸스지를 구현하는 방법의 고유한 인접한 문자 부분입니다.도와 주시기 바랍니다.의사는 괜찮습니다.

도움이 되었습니까?

해결책

황금 규칙

여기에는 골든 규칙의 동적 프로그래밍입니다.

을 때는 솔루션을 작은 서브 문제들 결합할 수 없습으로 솔루션 크 서브 문제들 때문에 없는 정보,확장 서브 문제들에 의해 매개 변수 추가 제공하는 정보가 없습니다.


첫 번째 시도

$S$ 의 순서 $n$ 문자 또는 $S[0:n].$

$L[i][j]$ 이 될 길이의 긴 회문 시퀸스 $S[i:j]$.그것은 쉽게 파악하는 경우 기본이고,에 의해 증가 $i$ 그리고/또는 감소 $j$, 고,재발관계에 대한 $L[i][j]$.

지금 추가 조건의 심지어는 길이입니다.자 $E[i][j]$ 이 될 길이의 긴도 길이의 회문 시퀸스 $S[i:j]$.우리는 알 수 있습 base 경우 재발관계에 대한 $E[i][j]$, 비슷한 그들의 $L[i][j]$.

지금 추가 조건의 고유한 인접한 문자,즉,아무 편지를 나타날 수 있 두 번 연속를 제외하고 편지에서 센터도 있습니다.자 $D[i][j]$ 이 될 길이의 긴도 길이 뚜렷한 초고속 무선 인터넷을 무료로 이용-letter 회문 시퀸스 $S[i:j]$.할 수 있듯이 지적했다,우리는 수 없는 그 밖의 재발관계에 대한 $D[i][j]$, 이후,확장 같은 시퀀스를 더 이상 하나가 소개하는 문자를 반복.

황금 규칙을 구출하기 위해 제공됩니다.다른 매개변수를 추가을 분류하는 문자의 끝에서 가장 긴 시퀸스 지금까지 발견,그래서 우리는 결정할 수 있는 방법을 확장하는 시퀀스 제대로.

$D[i][j][\lambda]$ 이 될 길이의 긴도 길이 뚜렷한 초고속 무선 인터넷을 무료로 이용-letter 회문 시퀸스 $S[i:j]$ 로 끝나는 letter $\lambda$.는 것입니다,우리는 계산 $D[i][j][ ext{'}a ext{'}]$, $D[i][j][ ext{'}b ext{'}]$, $D[i][j][ ext{'}c ext{'}]$, $\cdots$, $D[i][j][ ext{'}z ext{'}]$.

  • 최종 대답은 더 큰의 $\max_\lambda D[0][n-1][\lambda]$$0$.

  • 가정 먼저 $ ext{'}a ext{'}$$S$ 거나 그 이후 $S[i]$ 에 나타납니다 $S[\vec{i_{ ext{'}a ext{'}}}]$.가정 먼저 $ ext{'}a ext{'}$$S$ 에 나타납니다 $S[\overleftarrow{j_{ ext{'}a ext{'}}}]$$S[j]$ 검색니다. $\vec{i_{ ext{'}a ext{'}}}$$\overleftarrow{j_{ ext{'}a ext{'}}}$ 설정 $-1$ 는 경우 $ ext{'}a ext{'}$ 이 발견되지 않는 각각합니다.우리는 우리를 위해, $j\ge i+2$,

    $$D[i][j][ ext{'}a ext{'}]=\시작하느니라 \max(2,2+\max_{\mu\지 않= ext{'}a ext{'}}D[\vec{i_{ ext{'}a\텍스트{'}}}+1][\overleftarrow{j_{ ext{'}a ext{'}}}][\mu])& ext{if}0\le\vec{i_{ ext{'}a ext{'}}}\lt\overleftarrow{j_{ ext{'}a ext{'}}},\\ -1& ext{그렇지 않으면,}\\ \끝{경우}$$$\mu$ 실행 모두를 통해 영어 소문자.

  • 기본 경우 $$D[i][i][ ext{'}a ext{'}]=0.$$

일반화 $ ext{'}a ext{'}$ 변수 $\lambda$, 을 작성할 수 있습니다발과 관련과에 대한 기본 케이스 $D[i][j][\lambda]$.

참고로 추가 정보를 구현에 $\lambda$ 매개 변수를 쉽게 추 되풀이다.

이 시도는 성공적인,우리는 더 할 수 있습니다.


두 번째 시도

우리는 우리를 단순화할 수 있습 서브 문제들.

$F[i][j]$ 의 길이장 같은 시퀀스에서 시작 $S[i]$ 에서 끝나 $S[j]$.그런 다음 우리는

$$F[i][j]=\시작하느니라 \max(2,2+\max_{\mu\지 않=S[i]}F[\vec{i_\mu}][\overleftarrow{j_\mu}])& ext{if}S[i]=S[j],\\ -1& ext{그렇지 않으면,}\\ \끝{경우}$$$-1$ 을 의미"를 찾을 수 없습니다".모두 소문자 영문자 $\mu$, $S[\vec{i_\mu}]$ 첫 번째 $\mu$ 후 나타나는 $S[i]$, 고 $S[\overleftarrow{j_\mu}]$ 첫 번째 $\mu$ 앞에 나타나는 $S[j]$ 검색니다.는 경우 그들 중 하나를 찾을 수 없는 장기 $F[\vec{i_\mu}][\overleftarrow{j_\mu}]$ 은 무시됩니다.

최종 대답은 더 큰의 $\max_{i,j}F[i][j]$ 0.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top