LeekCode 문제 해결 기록

지난 밤의 게임, 2 시간 반 솔루션의 다섯 개 가지 주제를 쉽게 반 시간을주고, 처음 두 질문, 문제의 세 번째 카드 후에 해결이 LeekCode 다섯 번째 과제 해결을 시작 왼쪽 솔루션은 종료하지만 첫 번째로 확인되지 주제에 대한 네 가지 질문 좀 봐.
단지 36분 모두 완료 거물급 최고 순위.
큰 오빠 만 조금 더 가까이, 크게 다릅니다.

LeekCode는 --- 5. 상동은 긴 문자열
, 문자열의 주어진 가장 긴 문자열 회문을 찾을이야. 당신은 천 개의의 최대 길이 있다고 가정 할 수 있습니다.

문제 해결 방안이 문제의 해결은 내가 아이디어에 대해 이야기, 내 자신의이 질문의 (센터 익스텐더) 솔루션 몇 가지가 있습니다. 먼저, 세 종류 회문 1 '을 baab', 2 'BAB를'; 3 'A'를. 그리고,이 회문의 중심에서 발견 할 수있는 대칭 분명하다합니다 (먼저 이해하기 쉬운 두 가지에만이 분야에서 세 번째로 유사한 'ABCD'에서 각 문자는 회문으로 볼 수있다, 그것은 소요 그의 회문으로 첫 번째 문자). 우리는 제 1 및 제 2 케이스를 비교, 회문 센터 같이 필드를 통해 각 문자를 걸어 : 첫 번째 회문의 길이가, 짝수 통과하기 때문에, 그래서 우리는 현재 위치를 비교 가서 자신의 팔린 드롬 2 길이 차례로 전에 비교하여 문자가 동일한 길이의 길이를 계산하기 위해 그 필요성 결합 홀수이며, 이전 문자가 동일한 경우, 비교 전에 문자가 동일 후에 계속되는 경우 상 시스템. 반복되는 문자가 복수 동시에 만족하는 경우 모두 발생하는 조건 (예를 들어, 'baaab'), 각 문자는 동시에 2 케이스 패리티를 수행하고 큰 길이를 취할 필요가 있도록.

var longestPalindrome = function(s) {
    if(s.length<2){
        return s;
    }
    let length=0;
    let string='';
    for(let i=1;i<s.length;i++){
        let oddLength=1,evenLength=0;
        let oddStr='',evenStr='';
        for(let j=1;j<=i;j++){
            if(s[i-j]===s[i+j-1]){
                evenLength+=2;
                evenStr=s.substr(i-j,evenLength);
            }else{
                j=i;
            }
        }
        for(let j=1;j<=i;j++){
            if(s[i-j]===s[i+j]){
                oddLength+=2;
                oddStr=s.substr(i-j,oddLength);
            }else{
                j=i;
            }
        }
        string=Math.max(length,evenLength,oddLength)===evenLength?evenStr:Math.max(length,evenLength,oddLength)===oddLength?oddStr:string
        length=Math.max(length,evenLength,oddLength)
    }
    return length===1?s[1]:string;//全为单字符时,取第一个字符
};

이 질문은 공식 솔루션을 많이이며, 문자열은 대부분의 시간을 절약하기 때문에,하지만 어떻게 내가 여러 번 시도 문자열의 차단을 비교, 내가 생각했던 방식을 부정하고, 마지막으로 포기했다. 무력에 관해서는, 존재하고 내가 바보 느꼈다, 그것은 회문 여부를 확인 할 수 있습니다 모든 문자열을 통해 이동하는 것입니다, 나는 사실 이미 폭력의 일종으로 간주 의미에서 중심에서 연장 생각, 아니 모든 첫 번째 문자열을 다시 비교 열거 할 필요가 없습니다. 내가 너무 익숙하지 않다, 아직 이해하고, 그래서 다시 가서 보충을 읽을 수없는 동적 프로그래밍 알고리즘. Manacher 알고리즘도 있습니다, 그것은 매우 빠른 하드웨어이라고, 나는 모양을 이동 한 다음 백업 가고 싶어.

추천

출처www.cnblogs.com/eYan/p/11586383.html