エコー文字列(二点、文字列を使用)

5881 ワード

指定された文字列sの場合、最大1文字が削除され、返信文字列になると成功します.そうしないと失敗します.

1.考え方



まず左と右のエラー部分をチェックし、エラー部分から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を返します.
      if(left!==parseInt(str.length/2)){
        str=str.substring(left+1,right);
        if(str!==str.split('').reverse().join(''))
          return false;
      }