JavaScript:字符串

news/2024/11/29 4:34:42/

文章目录

  • 字符串
    • 344. 反转字符串
      • reverse() 方法(打基础的时候,不要太迷恋库函数)
      • 代码及思路
    • 541. 反转字符串 II
      • JavaScript String split() 方法
      • JavaScript Array join() 方法
      • 代码分析见注释
    • 剑指 Offer 05. 替换空格
      • 思路
      • 注意:上面代码该空格的要空格

字符串

344. 反转字符串

reverse()
打基础的时候,不要太迷恋库函数

reverse() 方法(打基础的时候,不要太迷恋库函数)

reverse() 方法反转数组中元素的顺序。
在这里插入图片描述

代码及思路

思路很简单
反转字符串 :只需要首尾相应的位置交换元素即可

/*** @param {character[]} s* @return {void} Do not return anything, modify s in-place instead.*/
var reverseString = function(s) {// 打基础的时候,不要太迷恋库函数// s.reverse()// return sreverse(s)
};var reverse = function(s) {let l = 0, r = s.length - 1while(l <= r) {const _ = s[l]s[l++] = s[r]s[r--] = _}
}

541. 反转字符串 II

JavaScript String split() 方法

split() 方法将字符串拆分为子字符串数组。
split() 方法返回新数组,不会更改原始字符串。
如果 (" ") 用作分隔符,则字符串在单词之间进行拆分。
[图片]

JavaScript Array join() 方法

join() 方法将数组作为字符串返回。
元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。
注释:join() 方法不会改变原始数组。
在这里插入图片描述

代码分析见注释

/*** @param {string} s* @param {number} k* @return {string}*/
var reverseStr = function(s, k) {/* 
思路:2k一个区间部分反转---循环 i += 2*k,前k个反转,利用左右指针,交换即可,注意右指针边界,剩余字符少于k,全部反转*/// 首先把字符串处理成字符串数组,方便进一步操作let strArr = s.split("")let len = s.length// 取每2k字符 循环for(let i = 0; i < len; i += 2*k) {let left = i, right = i + k - 1// 我们这里设置的左右边界是超出范围的,主要是方便后面while语句写法// right > len 表示剩余字符少于k,要全部反转,我们就把右指针安排在尾端if(right > len - 1) right = len - 1while(left <= right) {const _ = strArr[left]strArr[left++] = strArr[right]strArr[right--] = _}}return strArr.join("")};

剑指 Offer 05. 替换空格

思路

  1. 首先扩充数组到每个空格替换成"%20"之后的大小。
  2. 然后从后向前替换空格,也就是双指针法,过程如下:
  3. i 指向新长度的末尾,j 指向旧长度的末尾。

左边的时数字给右边,左边的是空格给右边%20

/*** @param {string} s* @return {string}*/
var replaceSpace = function(s) {/* 增加数组长度 通过空格的个数利用双指针 快指针指向初始末尾 慢指针指向增加后的末尾快指针遇到空格,慢指针对应添加元素 %20 向前移动三位(填%20) 再移动一位给下一次快指针遇到不是空格,把当前元素给慢指针 向前移动一位*/// 1 字符串转数组const strArr = Array.from(s)// 2 空格个数let count = 0for(let i = 0; i < strArr.length; i++) {if(strArr[i] === ' ') {count++}}// 3 双指针初始化let left = strArr.length - 1let right = strArr.length + count * 2 - 1// 4 循环  if 遇到空格  else 遇到值while(left>=0) {if (strArr[left] === ' ') {strArr[right--] = '0'strArr[right--] = '2'strArr[right--] = '%'left--} else {strArr[right--] = strArr[left--]}}// 5 返回新的字符串  数组转字符串return strArr.join("")
};

注意:上面代码该空格的要空格

strArr[left] === ’ '不空格会报错!!!!部分案例不能通过
这里说了空格的时候就要加空格,不要写成空字符串的形式
字符串转为数组
Array.from()
在这里插入图片描述
在这里插入图片描述
str.split()
在这里插入图片描述


http://www.ppmy.cn/news/62196.html

相关文章

k8s搭建教程

1、简介 这里就不赘述&#xff0c;想要了解的朋友直接去这里深入了解什么是K8S。 2、环境要求 2台以上机器&#xff0c;操作系统 CentOS7.7-64位系统 硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多 集群中所有机器之间网络互通 可以…

系统分析师论文---论软件需求获取技术以及应用

前言&#xff1a; 按照论文题目写相关内容。这一块是自己要提前准备的重点&#xff0c;并且一定要针对自己的项目构造几个真实的例子&#xff0c;不能只列举理论。回应子题目。这一块一般是写过程&#xff0c;有可能会问其他的&#xff0c;需要针对性点题 &#xff0c;但是不会…

7-2 哈利·波特的考试

哈利波特要考试了&#xff0c;他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha&#xff0c;将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念&#xff0c;例如ahah可以将老鼠变成猫。另外&…

在Linux中进行Jenkins部署(maven-3.9.1+jdk11)

Jenkins部署在公网IP为x.x.x.x的服务器上 maven-3.9.1要安装在jdk11环境中 环境准备 第一步&#xff0c;下载jdk-11.0.19_linux-x64_bin.tar.gz安装包。 登录地址&#xff1a;Java Downloads | Oracle 下载jdk-11.0.19_linux-x64_bin.tar.gz安装包&#xff0c;然后使用Win…

【每日一题Day197】LC2432处理用时最长的那个任务的员工 | 枚举

处理用时最长的那个任务的员工【LC2432】 共有 n 位员工&#xff0c;每位员工都有一个从 0 到 n - 1 的唯一 id 。 给你一个二维整数数组 logs &#xff0c;其中 logs[i] [idi, leaveTimei] &#xff1a; idi 是处理第 i 个任务的员工的 id &#xff0c;且leaveTimei 是员工完…

树形结构的三级分类如何实现?

概述&#xff1a; 本三级联动分类服务端使用的是: Springboot MyBatis-plus&#xff0c;前端使用的是&#xff1a;VueElementUI&#xff0c;树形控件使用的是el-tree。本三级联动分类可以把任一子项拖拽到其它目录&#xff0c;可以添加、编辑、删除分类。 效果图&#xff1a…

ES的概述

一、ECMASript 相关介绍 1.1什么是 ECMA ECMA &#xff08; European Computer Manufacturers Association &#xff09;中文名称为欧洲计算机制 造商协会&#xff0c;这个组织的目标是评估、开发和认可电信和计算机标准。 1994 年后该 组织改名为 Ecma 国际。 1.2.什么…

基于Python的PROSAIL模型介绍以及使用

1、介绍 PROSAIL是两种模型耦合得到的。 SAIL是冠层尺度的辐射传输模型&#xff0c;把冠层假设成是连续的且具有给定几何形状和密度的水平均匀分布的介质层&#xff0c;从而模拟入射辐射与均匀介质之间的相互作用&#xff0c;具体还是挺复杂的。而PROSPECT就是叶片尺度的辐射传…