1. 程式人生 > >利用正則判斷/獲取迴文字串的解法

利用正則判斷/獲取迴文字串的解法

判斷迴文字串,一般解法是兩邊居中遍歷,然後對比。
獲取迴文字串,一般解法是對比完,進行”滑動窗格“演算法。

給大家提供一個新的思路解法,正則判斷迴文字串。

最近補了下正則反向引用的用法,想著能不能用正則直接匹配,所以開了一個獲取迴文字串的方法,效率上”省去了“(正則做了這件事)兩邊居中的對比時間,利用正則一次性就可以拿到迴文字串,下面上程式碼。

原理: 

匹配模式: 例如 abba    --->    (\w)(\w)\2\1

利用正則反向引用 構建模式字串 做匹配

function isPalindrome(str) {
  const len = Math.floor(str.length / 2);
  let pattern = '(\\w)'.repeat(len) + '\\w?';
  for (let i = len; i > 0; i--) {
      pattern += '\\' + i;
  }


  const exp = new RegExp(pattern);
  const match_str = exp.exec(str);

  return match_str;
}