회문문자열(투포인트, 문자열활용)
문자열 s가 주어지면 최대문자 1개까지 지워서 회문문자열이 되면 성공, 되지 않으면 실패다.
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;
}
Author And Source
이 문제에 관하여(회문문자열(투포인트, 문자열활용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mingsomm/회문문자열투포인트-문자열활용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)