【igeek手册】每日算法(2)——字符串翻转

111 阅读1分钟




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