javascript算法集:判断文本是否为回文
定义:如果将一个文本翻转过来,能和原文本完全相等,那么就可以称之为“回文”。
判断文本是否为回文 方法一(字符串、数组内置方法)
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:方法简单,但效率不高,会产生一个新的变量
判断文本是否为回文 方法二(循环)
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:网上还有其他解法,大多为以上两种的变形。
测试:reverseVal(‘abc’) // ‘cba’
THE END