최장 회문열 총결산

1006 단어
자료 참조:
  • Leetcode Solution of Longest Palindromic Substring in Java
  • 최장 메모 문자열
  • 소감:
    (1) Manacher 알고리즘은 O(n)의 복잡도에 도달할 수 있으나 묘사하기 어렵고 고전적이지 않기 때문에 반드시 파악할 필요가 없다.
    (2) 동태적으로 기획하는 방법은 곰곰이 생각해 볼 만하다
    Define a 2-dimension array "table"and let table[i][j] denote whether substring from i to j is palindrome.(2차원 그룹을 정의합니다.table[i][j]로 i에서 j까지의 하위 문자열이 회문 문자열인지 여부를 나타냅니다)
    Start condition:
    table[i][i] == 1;
    table[i][i+1] == 1  => s.charAt(i) == s.charAt(i+1) 
    

    Changing condition: (이것은 일종의 귀속적인 사고방식이다.table[i+1][j-1]는 회문열이고str[i]와str[j]가 같기 때문에 i에서 j까지는 회문열, 즉table[i][j]=1)이다.
    table[i][j] == 1 => table[i+1][j-1] == 1 && s.charAt(i) == s.charAt(j)

    (3) 참고자료 2의 O(n2) 알고리즘도 뚜렷하다.
    안팎으로 판단하다.즉, 하위 문자열 (예: dd) 이 대칭인지 아닌지를 먼저 판단하는 것이다.만약 그것이 (dd) 대칭적이지 않다면, 이 하위 문자열의 양쪽 끝에 각각 한 문자를 연장해서 얻은 문자열은 틀림없이 대칭적이지 않을 것이다.만약 그것(dd)이 대칭적이라면, 그것(dd)의 양쪽 끝에 연장된 문자가 서로 같은지 아닌지를 판단하고, 만약 서로 같다면 연장된 문자열은 대칭적이다.

    좋은 웹페이지 즐겨찾기