문제
문제 링크 : Lexicographically Smallest Palindrome
풀이
var makeSmallestPalindrome = function(s) {
let str = s.split('')
for(let i = s.length - 1, j = 0; i >= Math.ceil(s.length / 2); i--, j++) {
if(str[i] < str[j]) {
str[j] = str[i]
} else {
str[i] = str[j]
}
}
return str.join('')
};
- 문자열 s를 배열로 만들고, 해당 배열 길이의 절반까지만 for문을 돌리고
- str의 i번째와 j번째를 비교하여, 더 작은 숫자쪽으로 통일
- Runtime 148 ms, Memory 59.80 MB
다른 풀이
var makeSmallestPalindrome = function(s) {
s = s.split("")
let left =0
let right = s.length-1
while(left < right){
if(s[left] < s[right]){
s[right] = s[left]
} else if (s[left] > s[right]) {
s[left] = s[right]
}
left++
right--
}
return s.join("")
};
- 첫번째 풀이와 같은 방식이고 while문을 활용
- Runtime 151 ms, Memory 59.41 MB