利用正則判斷/獲取迴文字串的解法
阿新 • • 發佈:2019-01-10
判斷迴文字串,一般解法是兩邊居中遍歷,然後對比。
獲取迴文字串,一般解法是對比完,進行”滑動窗格“演算法。
給大家提供一個新的思路解法,正則判斷迴文字串。
最近補了下正則反向引用的用法,想著能不能用正則直接匹配,所以開了一個獲取迴文字串的方法,效率上”省去了“(正則做了這件事)兩邊居中的對比時間,利用正則一次性就可以拿到迴文字串,下面上程式碼。
原理:
匹配模式: 例如 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; }