传送门
取余
-
解题思路:
- 取余比较巧妙,从 n 开始,到 len + n;
- 对 len 取模,当 i <= len时,整个遍历过程拿到的是n -> len 的字符,但 i > len 时,i % len 的结果等于0 到 n 的下标;
-
复杂度:
- 时间复杂度: O(n);
- 空间复杂度: O(n);
-
代码实现:
function reverseLeftWords(s: string, n: number): string { let result: string = ""; for (let i = n; i < n + s.length; i++) { result += s[i % s.length]; } return result; };
队列
-
解题思路:
- 把字符串转成数组,当旋转 2 次,那么执行 2 次出队再入队,就能得到旋转后的结果;
-
复杂度:
- 时间复杂度: O(n);
- 空间复杂度: O(n);
-
代码实现:
function reverseLeftWords(s: string, n: number): string { let res = s.split(''); while (n-- > 0) { res.push(res.shift()); } return res.join(''); };
打赏作者
您的打赏是我前进的动力
微信
支付宝
第 1️⃣ 座大山:高阶函数编程技巧
上一篇
评论