判断回文字符串,一般解法是两边居中遍历,然后对比。
获取回文字符串,一般解法是对比完,进行”滑动窗格“算法。
给大家提供一个新的思路解法,正则判断回文字符串。
最近补了下正则反向引用的用法,想着能不能用正则直接匹配,所以开了一个获取回文字符串的方法,效率上”省去了“(正则做了这件事)两边居中的对比时间,利用正则一次性就可以拿到回文字符串,下面上代码。
原理:
匹配模式: 例如 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;
}