不管是做前端开发还是后台开发,编程能力都是最重要的。处理业务的逻辑能力会转变成你运用算法和数据结构解决实际问题的编码能力,因此,多刷题总是有好处的。在freecodecamp做了一些题之后,虽然当时想出来了,但总觉得做些总结才能提升自己的编程思想,因此,写下了这篇文章。之后,会不断补充,权当做自己的练习笔记吧。
check for palindromes
如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。如果给定的字符串是回文,返回true,反之,返回false。
解题的第一步是将字符串去除标点符号和空格,可以用一个正则表达式替换成空字符串,
var newstr = str.replace(/[\W_]/g,"").toLowerCase();
\W表示非常用字符集,即除了(0-9A-Za-z_)之外的所有字符。
接下来再根据回文的特点,正数位置的字符跟倒数位置的字符始终是相同的,故只需判断前半部分和后半部分是否相同
for(var i =0;i<newstr.length/2;i++){
if(newstr.charAt(i) != newstr.charAt(newstr.length-1-i)){
return false;
}
}
完整代码如下:
function palindrome(str) {
var newstr = str.replace(/[\W_]/g,"").toLowerCase();
for(var i =0;i<newstr.length/2;i++){
if(newstr.charAt(i) != newstr.charAt(newstr.length-1-i)){
return false;
}
}
return true;
}