代码随想录算法训练营第第八天 | 344.反转字符串 、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词 、卡码网:55.右旋转字符串
344.反转字符串
建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数
题目链接/文章讲解/视频讲解:https://programmercarl.com/0344.反转字符串.html
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
let left = 0;
let right = s.length-1;
while(left<right){
let mid = s[left];
s[left] = s[right];
s[right] = mid;
left++;
right--;
}
return s;
};
- 反转字符串II
建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0541.反转字符串II.html
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var reverseStr = function(s, k) {
let len = s.length;
const res = s.split('');
for(i=0;i<len;i+=2*k){
let l = i;
let r = i+k-1>=len?(len-1):i+k-1;
while(l<r){
let mid = res[l];
res[l]=res[r];
res[r]=mid;
r--;
l++;
}
}
return res.join('')
};
卡码网:54.替换数字
建议:对于线性数据结构,填充或者删除,后序处理会高效的多。好好体会一下。
题目链接/文章讲解:https://programmercarl.com/kama54.替换数字.html
js不能对字符串做操作,例如let s='dasdasd' s[1]='d',这种是无效的
最重要学习思路和方法,可以用户数组来操作
151.翻转字符串里的单词
建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0151.翻转字符串里的单词.html
/**
* @param {string} s
* @return {string}
* 还有方法就是用数组,先翻转整个数组,再翻转单词
*/
var reverseWords = function(s) {
s = s.trim();
const arr = s.split(' ');
const res = [];
console.log(arr)
for(let i=0;i<arr.length;i++){
if(arr[i]===''){
continue;
}
res.push(arr[i]);
}
res.reverse();
return res.join(' ')
};
卡码网:55.右旋转字符串
建议:题解中的解法如果没接触过的话,应该会想不到
题目链接/文章讲解:
https://programmercarl.com/kama55.右旋字符串.html
其他方法思路是,先翻转整个字符串,再翻转特定的字符,“负负得正”
function dealStr(num, str){
let len = str.length - num;
let str1 = str.substr(len, num);
let str2 = str.substr(0,len);
return str1+str2;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构