在 JavaScript 中最多使用一次删除来形成回文

javascriptweb developmentfront end technology

问题

我们需要编写一个 JavaScript 函数,该函数将字符串 str 作为第一个也是唯一的参数。

我们的函数可以从字符串 str 中删除最多一个字符,并且我们需要检查是否可以这样做使其成为回文。

例如,如果函数的输入是

输入

const str = 'dr.awkward';

输出

const output = true;

输出说明

因为如果我们删除‘.’来自字符串,

示例

以下是代码 −

const str = 'dr.awkward';
const validPalindrome = (str = '') => {
   const valid = (left, right) => {
         for (let i = left; i <= Math.floor((left + right) / 2); i++) {
         if (str[i] !== str[right - (i - left)]) {
            return false
         }
      }
      return true
   }
   for (let i = 0; i <= Math.floor(str.length / 2); i++) {
      const right = str.length - 1 - i
      if (str[i] !== str[right]) {
         return valid(i, right - 1) || valid(i + 1, right)
      }
   }
   return true
}
console.log(validPalindrome(str));

输出

true

相关文章