557. 反转字符串中的单词 III
1. 暴力解法
var reverseWords = function(s) {return s.split(" ").map(item => item.split("").reverse().join("")).join(" ");};
直接调用原生的 api 来解决。
解题思路:
- 先将字符串按照空格进行拆分,得到一个新数组
["Let's", "take", "LeetCode", "contest"]; - 再对每一项进行反转,在反转过程中,需要将其转为 Array 类型,最后将结果拼接为一个字符串即可;
2. 双指针
/**示例:输入:"abcde" 1 3输出:adcbe注解:将字符串的第1位到第3位进行反转类似于 344. 反转字符串*/var reverseString = function (s) {let left = 0,len = s.length,right = len - 1,newArr = new Array(len);while (left <= right) {newArr[left] = s[right]newArr[right] = s[left]left++;right--;}return newArr.join("");};/*** @param {string} s* @return {string}*/var reverseWords = function (s) {return s.split(" ").map(item => reverseString(item)).join(" ");};
由于 JavaScript 中 String 是不可变的,所以这里就换成了 Array 来替代一下,实现原理上和 344. 反转字符串 都是一样的。
split 就直接拿来用了,不再手写了。。。
509. 斐波那契数
方法1 - 递归
var fib = function (n) {if (n === 0) return 0;if (n === 1 || n === 2) return 1;return fib(n - 1) + fib(n - 2);};
注解

