用递归实现一个简单的函数,返回一个布尔值,检测某个字符串是否是回文,例如"aabbaa"返回true,而"zhouxiansheng"返回false。
方法一:reverse
1、函数命名:palindrome,n.回文(正反读都一样的词语);
2、js实现字符串的完全翻转:String.split("").reverse().join("");
functionisPalindrome(str){returnstr.split("").reverse().join("")===str}
相信这样的方法,大多数程序员都会做,但是大家有没有想过,如果面试题限制使用reverse方法,那该怎么做呢?
方法二:递归
当函数反复调用自身时,就执行了递归操作,如果把一个字符串反转,能和原字符串相等,那么这就是一个回文字符串。下面代码就是实现回文功能的函数,它有两个结束递归的出口,如果不满足退出的条件,那么每次都会去除首尾字符再执行递归。
两个结束递归的出口:
1、字符长度小于等于1;
2、首字母和末尾字母做匹配。
functionisPalindrome(str){if(str.length=1)returntrue;if(str[0]!==str[str.length-1])returnfalse;returnisPalindrome(str.substr(1,str.length-2));}
我是一个能玩转美工与后端PHP的前端架构师,每周一更是我一直以来追求的目标,感谢您能持续