题目点评
字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理。需要对字符的处理方法比较熟悉,在回答的时候尽量能够说出多种解决方法更好!
字符串翻转的方法
1)使用字符串函数
- //str=hello
- function reverseString(str) {
- var array = str.split('');//['h','e','l','l','o'];
- array = array.reverse();// ['o','l','l','e','h'];
- str = array.join('');//"olleh"
- return str;
- }
上面代码可以合并一行代码
- //str=hello
- function reverseString(str) {
- return str.split('').reverse().join('');;
- }
2)使用for循环
- function reverseString(str) {
- var newStr="";
- for(var i=str.length-1;i>=0;i--){
- newStr+=str[i];
- }
- return newStr;
- }
使用逆序遍历字符串,从后面将字符串累加起来。
3)使用递归
- function reverseString(str) {
- if (str === "") {
- return "";
- } else {
- return reverseString(str.substr(1)) + str.charAt(0);
- }
- }
- reverseString("hello"); // => olleh
第一部分的递归方法。你需要记住,你不会只调用一次,你将会有几个嵌套的调用。
每次调用str === "?"
reverseString(str)
+ str.charAt(0)
第一次调用
reverseString("Hello")
reverseString("ello") + "h"
第二次调用
reverseString("ello")
reverseString("llo") + "e"
第三次调用
reverseString("llo")
reverseString("lo") + "l"
第四次调用
reverseString("lo")
reverseString("o") + "l"
第五次调用
reverseString("o")
reverseString("") + "o"
第二部分的递归方法。
每次调用
返回
第五次调用
reverseString("") + "o" = "o"
第四次调用
reverseString("o") + "l" = "o" + "l"
第三次调用
reverseString("lo") + "l" = "o" + "l" + "l"
第二次调用
reverserString("llo") + "e" = "o" + "l" + "l" + "e"
第一次调用
reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h"
上面的方法还可以继续改良一下,改成三元操作符:
- function reverseString(str) {
- return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);
- }
- reverseString("hello"); // => olleh