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;
}
标签:卡码,反转,len,let,讲解,字符串,翻转
From: https://www.cnblogs.com/yuanyf6/p/18194870