Home > Article > Web Front-end > How to determine palindrome string in javascript (example analysis)
The content of this article is about how JavaScript determines palindrome strings (example analysis). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Paindromes(Paindromes), in Chinese, means that the backward and forward readings are the same, and symmetrical, such as "Shanghai tap water comes from the sea"; in English, It refers to words that are the same when viewed frontally and backwards, such as "madam"; and for numbers, also called palindromes, they refer to a symmetrical number like "16461", that is, the digits of this number are in reverse order. The number obtained after rearranging the order is the same as the original number.
Judge the given string. If the string is a Palindromes, then return true
, otherwise return false
.
function Palindromes(str) { let reg = /[\W_]/g; // \w 匹配所有字母和数字以及下划线; \W与之相反; [\W_] 表示匹配下划线或者所有非字母非数字中的任意一个;/g全局匹配 let newStr = str.replace(reg, '').toLowerCase(); let reverseStr = newStr.split('').reverse().join('') return reverseStr === newStr; // 与 newStr 对比 }
Actually, many steps are done here to operate the array, converting characters to arrays, flipping arrays and then converting to strings, so here Performance isn't great either. It is thought that the array is a reference type. To change the array, a new heap address space needs to be opened.
function Palindromes(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); for(let i = 0, len = Math.floor(newStr.length / 2); i < len; i++) { if(newStr[i] !== newStr[newStr.length - 1 - i]) return false; } return true; }
Writing method 2
function Palindromes(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); let len = newStr.length; for(let i = 0, j = len - 1; i < j; i++, j--) { // i < j console.log('---'); if(newStr[i] !== newStr[j]) return false; } return true; }
function palin(str) { let reg = /[\W_]/g; let newStr = str.replace(reg, '').toLowerCase(); let len = newStr.length; while(len >= 1) { console.log('--') if(newStr[0] != newStr[len - 1]) { // len = 0; // 为了终止 while 循环 否则会陷入死循环 return false; } else { return palin(newStr.slice(1, len - 1)); // 截掉收尾字符 再次比较收尾字符是否相等 // 直到字符串剩下一个字符(奇数项)或者 0 个字符(偶数项) } } return true; }
For a given string, you can delete at most one character to determine whether it is still a palindrome.
Set a variable flag. When the pair of characters on both sides are found to be different for the first time, the comparison can be continued; if differences are found in subsequent comparisons, the result will be returned immediately.
function palin(str) { let flag = false; // 第一次不同可允许 let len = str.length; for(let [i, j] = [0, len - 1]; i < j; i++, j--) { if(str[i] !== str[j]) { if(flag) { return false; } // 第一次发现不同时,让右边-1 或左边+1判断相不相等 // 这时候若相等可继续 否则直接返回结果 false if(str[i++] == str[j]) { i++; flag = true; } else if (str[i] == str[j--]) { j--; flag = true; } else { return false; } } } return true; } palin('abaacaaa'); palin('aabsdjdbaa'); palin('ab')
Related recommendations:
PHP determines whether a string is a palindrome string
JavaScript search String and return search results to a string method_javascript skills
The above is the detailed content of How to determine palindrome string in javascript (example analysis). For more information, please follow other related articles on the PHP Chinese website!