예 : "abaccddccefe"문자열의 "ccddcc"
해결책을 생각했지만 O (n ^ 2) 시간에 실행됩니다.
알고 1 :
단계 : 무차별 대입 방법
i = 1 ~ i에 대해 2 개의 for 루프 가 array.length보다 작습니다.
j = i + 1 ~ j가 array.length보다 작 으면 -1 입니다.- 이렇게하면 배열에서 가능한 모든 조합의 하위 문자열을 얻을 수 있습니다.
- 문자열이 회문인지 확인하는 회문 기능이 있습니다.
- 따라서 모든 하위 문자열 (i, j)에 대해이 함수를 호출합니다. 회문이면 문자열 변수에 저장합니다.
- 다음 회문 부분 문자열을 찾고 현재 문자열보다 크면 현재 문자열로 바꿉니다.
- 마지막으로 문자열 변수에 답이 있습니다.
문제 : 1.이 알고리즘은 O (n ^ 2) 시간에 실행됩니다.
알고 2 :
- 문자열을 뒤집어 다른 배열에 저장하십시오.
- 이제 두 배열 사이에서 가장 일치하는 부분 문자열을 찾으십시오.
- 하지만 이것도 O (n ^ 2) 시간에 실행됩니다.
더 나은 시간에 실행되는 알고리즘을 생각할 수 있습니까? 가능하면 O (n) 시간
O(n^2)
하기 위해 하위 문자열 *을 가져 오는 것O(n)
입니다O(n^3)
.