这是跟着代码随想录的顺序学习算法的第十天。
以下是学习题解时自己的一些理解与笔记,有错误欢迎指正与讨论。
344. 反转字符串、541. 反转字符串 II
参考相关链接:
笔记
344. 反转字符串
这题思路很简单,主要是代码随想录里面大佬写的 JS
版本又双叒叕秀了我一下。。。
// 自己写的
var reverseString = function(s) {
for (var i = 0; i < s.length/2; i++) {
const temp = s[i];
s[i] = s[s.length - i - 1];
s[s.length - i - 1] = temp;
}
return s;
};
// 代码随想录
var reverseString = function(s) {
return s.reverse();
};
var reverseString = function(s) {
let l = -1, r = s.length;
while(++l < --r) [s[l], s[r]] = [s[r], s[l]];
return s;
};
541. 反转字符串 II
字符串不可变性,用 str.split('')
与 str.join('')
来解决。
[a, b] = [b, a]; 可实现交换a, b
// 代码随想录JS版本
var reverseStr = function(s, k) {
const len = s.length;
let resArr = s.split("");
for(let i = 0; i < len; i += 2 * k) {
let l = i - 1, r = i + k > len ? len : i + k; // 末尾临界判断
while(++l < --r) [resArr[l], resArr[r]] = [resArr[r], resArr[l]];
}
return resArr.join("");
};