function intersection(str1, str2) { let maxLength = 0; let endIndex = 0; let dp = Array.from({ length: str1.length + 1 }, () => Array(str2.length + 1).fill(0)); for (let i = 1; i <= str1.length; i++) { for (let j = 1; j <= str2.length; j++) { if (str1[i - 1] === str2[j - 1]) { dp[i][j] = dp[i - 1][j - 1] + 1; if (dp[i][j] > maxLength) { maxLength = dp[i][j]; endIndex = i; } } } } return maxLength === 0 ? "" : str1.substring(endIndex - maxLength, endIndex); }
두 문자열 str1과 str2 사이의 가장 긴 공통 부분 문자열을 찾는 알고리즘
dp[i][j]는 str1의 첫 번째 문자부터 i번째 문자까지와 str2의 첫 번째 문자부터 j번째 문자까지의 가장 긴 공통 부분 문자열의 길이를 저장
검색어 하이라이트 처리할 때 유용하게 활용
<li>Select the control items to display, and press <span class=”MMI”>Done</span>.</li>
이런 식으로 중간에 분리된 태그가 있는 텍스트에서
내가 “control items to display, and press do” 로 하이라이트 주고 싶을 때 사용 가능.