- 使用reverse()函数
思路:首先将字符串转换为字符数组,然后使用原生的reverse()函数进行逆序,得到逆序数组后再通过join()函数转换成逆序字符串。
代码:
function reverseString(str) {
return str.split('').reverse().join('');
}
var str = 'abcde';
console.log(reverseString(str)); //edcba
- 使用栈的先进后出原则
思路:利用栈先进后出的特点
代码:
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
- 利用递归算法
思路:使用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