leetcode 브러시 일기 제목

 

   여기에 사용 된 기본 방법은, 팽창의 중심, 즉 중앙은 단일 문자 일 수 있기 때문에, 그와 같은 ABBC 두 글자와 유사 할 수 있으며, 전체 문자열을 통과하도록하고, 그것을 그 지점 논의 할 필요가있다 :

    단일 문자 인 경우 n 개의 케이스가있는 경우, 두 글자 경우, N-1의 경우가 있었다. 따라서, 경우에 병용은 2N-1

    이어서, 각 시험은 중심을 연장시키고, 최종적으로 긴 팔린 드롬 서열을 결정 하였다.

    약 시작하고 직접적으로 원하는 캐릭터를 얻을 SUBSTR 함수 감산의 중심의 위치를 ​​결정.

다음 코드는 다음과 같습니다

1 개  솔루션 {
 2  공개 :
 3      의 INT expandAroundCenter ( 문자열 S가 되는 int 왼쪽 int로 오른쪽)
 -4-      {
 5          의 INT L = 왼쪽, R = 오른쪽;
6          동안 (L> = 0 && R <s.length () && S [L] == S [R])
 7          {
 8              메디슨 ;
9              R ++ ;
10          }
 11          리턴 RL- 1 ;
12      }
 13      
14     문자열 longestPalindrome ( 문자열 들) {
 15 일          경우 (s.length () < 1 )
 16          {
 17              반환  "" ;
18          }
 19          INT의 시작 = 0 , 최종 = 0 ;
(20)          에 대한이 ( int로 난 = 0 ; i가 s.length ()을 <; 내가 ++ )
 21          {
 22              INT LEN1 = expandAroundCenter (S, I, I);
23              INT LEN2 expandAroundCenter = (S, I, I + 1 );
24              INT LEN =맥스 (LEN1, LEN2);
25 일              경우 (렌> 종료 - 시작)
 26              {
 27                  개시 = 1 - (len- 1 ) / 2 ;
28                  단 = 1이 + (LEN) / 2 ;
29              }
 30          } 리턴 s.substr (시작, 종료 - 시작 + 1 );
31      }
 32      
33 };

최종 시간 복잡도는 O (N ^ 2)

 

 

    

추천

출처www.cnblogs.com/xingzhuan/p/11466129.html