344
简单的双指针
执行用时:76 ms, 在所有 JavaScript 提交中击败了95.79%的用户
内存消耗:48.1 MB, 在所有 JavaScript 提交中击败了24.30%的用户
/**
* @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 temp = s[left]
s[left] = s[right]
s[right] = temp
left += 1
right -= 1
}
return s
};
解法很多内置函数
str.split('').reverse().join('')
https://juejin.cn/post/6902323901888462862
541
执行用时:56 ms, 在所有 JavaScript 提交中击败了94.09%的用户
内存消耗:43.2 MB, 在所有 JavaScript 提交中击败了88.06%的用户
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var reverseStr = function(s, k) {
let start = 0
let end = 2*k
const len = s.length
let res = ''
while(start < len){
end = start + k
res = res + reverseSubStr(s.slice(start, end))
//slice的用法:end - end +k, end +k 如果小于 字符串长度则默认是字符串最后一位,不会溢出
res = res + s.slice(end, end + k)
start = start + 2*k
}
return res
};
var reverseSubStr = function(str){
return str.split('').reverse().join('')
}
剑指offer 05
/**
* @param {string} s
* @return {string}
*/
var replaceSpace = function(s) {
let res = ""
for(let i = 0; i < s.length; i++){
if(s[i] == ' '){
res += '%20'
}else{
res += s[i]
}
}
return res
};
151
initial solution
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
let res = ''
const sList = s.split(' ')
for(let i = sList.length; i > 0; i--){
if(sList[i-1] != ''){
res += sList[i-1] + ' '
}
}
return res.slice(0, res.length-1)
};
https://blog.csdn.net/weixin_44350171/article/details/111873906?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111873906-blog-108824580.pc_relevant_multi_platform_whitelistv4&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111873906-blog-108824580.pc_relevant_multi_platform_whitelistv4&utm_relevant_index=1
看完文章,参考代码随想录
es6 特性解构
function reverse(strArr, start, end){
let left = start;
let right = end;
while(left < right){
// es 6 的新特性
[strArr[left], strArr[right]] = [strArr[right], strArr[left]]
left++
right--
}
}
function removeExtraSpace(strArr){
let slowIndex = 0;
let fastIndex = 0;
while(fastIndex < strArr.length){
if(strArr[fastIndex] === ' ' && (fastIndex === 0 || strArr[fastIndex - 1] ==' ')){
fastIndex++
}else{
strArr[slowIndex++] = strArr[fastIndex++] // ++ 执行完这句语句++
}
}
// 移除末尾空格
strArr.length = strArr[slowIndex - 1] === ' '? slowIndex - 1 : slowIndex
}
剑指Offer58-II.左旋转字符串
/**
* @param {string} s
* @param {number} n
* @return {string}
*/
var reverseLeftWords = function(s, n) {
let len = s.length
s = s + s
return s.slice(n, len + n)
};