定义:如果将一个文本翻转过来,能和原文本完全相等,那么就可以称之为“回文”。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/3281.html
判断文本是否为回文 方法一(字符串、数组内置方法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /* * 判断文字是否为回文 * @param {string|number} val 需要判断的文字 * @return {boolean} bool 是否为回文 */ function isPalindrome1(val){ // 允许输入字符串和数字和布尔值 if (typeof val !== 'string') val = val.toString(); let newVal = val.split('').reverse().join(''); return val === newVal; } isPalindrome1(121) // true isPalindrome1('yuzuy') // true |
// PS:方法简单,但效率不高,会产生一个新的变量文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/3281.html
判断文本是否为回文 方法二(循环)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* * 判断文字是否为回文 * @param {string|number} val 需要判断的文字 * @return {boolean} bool 是否为回文 */ function isPalindrome2(val){ val = val + ''; // 非字符串转化为字符串 // 这里为什么 i <= j 呢?如果中间只有一个字符,是不需要比较的,它肯定等于它本身!!! for(let i = 0, j = val.length - 1; i < j; i++, j--){ if(val.charAt(i) !== val.charAt(j)){ return false; } } return true; } isPalindrome2(121) // true isPalindrome2('yuzuy') // true |
PS:网上还有其他解法,大多为以上两种的变形。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/3281.html
测试:reverseVal(‘abc’) // ‘cba’文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/3281.html