리트코드 - #5 Longest Palindromic Substring (Medium)
var longestPalindrome = function(s) {
let word = s.split("");
let check = new Array(word.length);
let result = "";
var i, j;
for (i = 0; i < word.length; i++) {
check[i] = new Array(word.length);
}
for (i = 0; i < word.length; i++) {
for (j = word.length-1; j >= i; j--) {
if (result.length >= (j-i+1)) continue;
if (checkWord(i, j)) {
result = s.slice(i, j+1);
}
}
}
return result;
function checkWord (start, end) {
if (start > end) return true;
if (check[start][end] != undefined) {
return check[start][end];
}
if (word[start] !== word[end]) {
check[start][end] = false;
return false;
} else {
if (checkWord(start+1, end-1)) {
check[start][end] = true;
return true;
} else {
check[start][end] = false;
return false;
}
}
}
};
재귀함수로 구현했음...
시작 위치와 끝 위치의 글자가 동일하면 그 가운데 글자를 확인하는 식으로 구현.
메모리를 많이 차지하는 점이 살짝 걸리긴 하지만 일단 내 머리로 생각할 수 있는 수준은 이정도인듯...