杀手 '杀手' 发布于2017-11-14,阅读168次,热度2次

【igeek手册】每日算法(2)——判断回文字符串




题目判断给定的字符串是回文返回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的极客杀手~大家有啥问题!随时留言勾搭我呦~~


扫一扫移动端阅读或分享

杀手  做个有信仰的程序猿杀手,解决您所有的问题

iGeekBar 的 Party Boy,主要从事于web大前端,喜爱coding、设计、产品、健身、跑步、游泳,爱折腾不将就。
     扫一扫立刻加入iGeekBar会员QQ群(545980198)
    和更多iG客会员交流分享吧~