문자열 s가 주어지면 최대문자 1개까지 지워서 회문문자열이 되면 성공, 되지 않으면 실패다.
틀린 부분을 먼저 left 와 right를 체크해서 틀린 부분에서 substring 을 자르고 substring을 거꾸로해서 일치하는 지 확인한다. 만약 일치하면 정답이고 아니라면 정답이 아니다.
function solution(str){
let left=0,right=str.length-1;
while(left<right){
if(str[left]!==str[right]){
// 다른 경우
str=str.substring(left+1,right);
if(str!==str.split('').reverse().join(''))
return false;
}
else{
left++;
right--;
}
}
return true;
}
console.log(solution("abcdccacba"));
// console.log(solution("abcabbakcba"));
test-case) abcdba 에 대해 문제가 생긴다.
cd에서 걸리기 때문에 substring(left+1, right) 가 성립이 되지 않는다.
만약, left가 중앙인 경우에만 체크하게끔 했고,
false를 return 하게끔 했다.
if(left!==parseInt(str.length/2)){
str=str.substring(left+1,right);
if(str!==str.split('').reverse().join(''))
return false;
}