题目:判断给定的字符串是回文返回true,反之返回false。
palindrome(回文)是指一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样。如:racecar、eye
注意:您需要删除字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是不是回文。
目标:
"eye" // true "A man, a plan, a canal. Panama" // true. "0_0 (: /-\ :) 0-0" // true "race car" // true "nope" // false
思路:
根据回文的特性,正着读和反着读是一样的特性。我们可以通过判断字符串是否相等的角度来看这问题,也就是把字符串反转过来然后比较。当然,你也使用for循环来做字符串匹配,但这是非常繁琐,不推荐。另外我们可以使用toLowerCase()把字符串转换成小写的,可以使用正则匹配字符和数字以外的所有符号替换成空,去掉空格和符号:
var newStr = str.toLowerCase().replace(/[^a-z0-9]/g,"");
代码:
function palindrome(str) { var newStr = str.toLowerCase().replace(/[^a-z0-9]/g,""); return newStr.split("").reverse().join("") === newStr; }
知识点:
toLowerCase() // 把字符串转换为小写 replace("oldStr", "newStr") // 找到oldStr替换为newStr split() // 字符串转化为数组 join() // 数组转化为字符串 reverse() // 反转数组
拓展知识:
toUpperCase() // 把字符串转换为大写
写在后面:
本系列课程主要从最基础的算法开始,每天一道小而美的算法,并配合讲解一些常用的知识点,来拓展已学的东西,触类旁通。旨在做好每一道精美的小菜。这里是igeekbar,我是iGeekBar的极客杀手~大家有啥问题!随时留言勾搭我呦~~