练习来自FreeCodeCamp中文社区
如果给定的字符串是回文,返回true
,反之,返回false
。
如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。
注意:需要去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文。
function palindrome(str) {
var str_1=str.replace(/\W+/g,'');//筛选所有非单词字符,注意W为大写
str_1=str_1.replace(/\_+/g,'');//筛选所有下划线字符
str_1=str_1.toLowerCase();//将字符串变成小写
var str_arr=str_1.split('');//为了翻转字符串,先变成数组
var str_arr2=str_arr.reverse();//翻转数组
var str_2=str_arr2.join('');//将数组中的内容连接成字符串
if(str_1==str_2)
return true;
else
// 请把你的代码写在这里
return false;
}
palindrome("eye");
注意:reverse()方法应用于数组,而不是字符串。
优化:来自https://blog.csdn.net/github_38414220/article/details/78411374
其一:
function palindrome(str) {
str = str.replace(/[^A-Za-z0-9]/g,'').toLowerCase();
//正则表达式直接索引匹配以A-Z、a-z、0-9字符串和数字开始的,字符串转换为小写
for(var i=0;i<str.length/2;i++){
//取字符串一半的长度,进行循环
if(str[i]!==str[str.length-i-1]){
//对字符串对应位置根据回文规则判断,是否相等(第一位对最后一位,第二位对倒数第二位,以此类推)
return false;
}
}
return true;
}
palindrome("eye");
其二:
function palindrome(str) {
var re = /[\W\s_]/gi;
// 转义字符\W,非单词字符和空白字符并且不区分大小写
str = str.replace(re,"");
return str.toLowerCase() === str.split("").reverse().join("").toLowerCase();
}
palindrome("eye");
总结:正则表达式+