Computer >> Máy Tính >  >> Lập trình >> Javascript

Hình thành palindrome bằng cách sử dụng nhiều nhất một lần xóa trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi, str, làm đối số đầu tiên và duy nhất.

Chức năng của chúng tôi có thể xóa nhiều nhất một ký tự từ chuỗi str và chúng tôi được yêu cầu kiểm tra xem chúng tôi có thể biến nó thành một palindrome khi làm như vậy hay không.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const str = 'dr.awkward';

Đầu ra

const output = true;

Giải thích đầu ra

Bởi vì nếu chúng ta xóa ‘.’ Khỏi chuỗi,

Ví dụ

Sau đây là mã -

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));

Đầu ra

true