유효한 회문 II

4690 단어 javascriptleetcode
문자열 s가 주어졌을 때, s가 최대 한 문자를 삭제한 후 회문이 될 수 있으면 true를 반환합니다.

예 1:

입력: s = "aba"
출력: 참

/**
 * @param {string} s
 * @return {boolean}
 */
var validPalindrome = function (s) {
  let pstring = s;
  let start = 0;
  let end = s.length - 1;

  while (start <= end) {
    if (pstring[start] === pstring[end]) {
      start++;
      end--;
    } else {
      return (
        checkPalindrome(pstring, start + 1, end) ||
        checkPalindrome(pstring, start, end - 1)
      );
    }
  }
  return true;
};

const checkPalindrome = (s, i, j) => {
  let left = i;
  let right = j;
  while (left <= right) {
    if (s.charAt(left) == s.charAt(right)) {
      left++;
      right--;
    }else if (s.charAt(left) != s.charAt(right)) {
      return false;
    }
  }
  return true;
};

좋은 웹페이지 즐겨찾기