逆序输出字符串

2021-09-28  本文已影响0人  沧澈
  1. 使用reverse()函数

思路:首先将字符串转换为字符数组,然后使用原生的reverse()函数进行逆序,得到逆序数组后再通过join()函数转换成逆序字符串。

代码:

function reverseString(str) {
    return str.split('').reverse().join('');
}

var str = 'abcde';

console.log(reverseString(str)); //edcba
  1. 使用栈的先进后出原则

思路:利用栈先进后出的特点

代码:

function Stack() {
    this.data = []; //保存在栈内的元素
    this.top = 0; // 记录栈顶的位置
}


Stack.prototype = {
    // 入栈,在栈顶计入元素
    push: function (element) {
        this.data[this.top++] = element;
    },
    // 出栈,返回栈顶元素 
    pop: function () {
        return this.data[--this.top];
    },
    // 栈的元素长度
    length: function () {
        return this.top;
    }
}


function reverseString(str) {
    var s = new Stack();
    var arr = str.split('');
    var len = arr.length;

    var result = '';

    // 入栈 
    for (let i = 0; i < len; i++) {
        s.push(arr[i])
    }

    // 出栈
    for (let i = 0; i < len; i++) {
        result += s.pop(arr[i]);
    }
    return result;
}

var str = 'abcde';

console.log(reverseString(str));  // edcba
  1. 利用递归算法

思路:使用charAt() 方法,charAt() 方法可返回指定位置的字符

语法

stringObject.charAt(index)  

index:表示字符串中某个位置的数字,即字符在字符串中的下标。

代码:

function reverseString(str, len, res) {
    if (len < 0) return res;

    res += str.charAt(len--);
    return reverseString(str, len, res);

}
var str = 'abcde';
var res = '';
console.log(reverseString(str, str.length - 1, res));  // edcba
上一篇 下一篇

猜你喜欢

热点阅读