当前位置: 首页 > news >正文

刷题笔记day08-字符串01

344. 反转字符串

思路1:使用双指针的方法,前后交换

func reverseString(s []byte)  {// 思路1:使用双指针进行交换// 思路2:使用库函数进行交换for i, j := 0, len(s) - 1; i < j;  {s[i], s[j] = s[j], s[i]i++j--}
}

思路2:使用库文件,进行翻转。目的是为了熟悉库,方便后面工作用。

class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""s.reverse()

541. 反转字符串 II

设置好边界条件,然后调用上一题写的双指针交换的函数既可搞定。

func reverseStr(s string, k int) string {// 双指针法s2 := []byte(s)start := 0length := len(s)for start < length {if (start + k >= length) {reverse(s2, start, length - 1)} else {reverse(s2, start, start + k - 1)}start += 2*k}return string(s2)
}func reverse(s []byte, start, end int) {for i, j := start, end; i < j; {s[i], s[j] = s[j], s[i]i++j--} 
}

LCR 122. 路径加密

func replaceSpace(s string) string {// 使用双指针的方法by := []byte(s)spaceCount := 0for i := 0; i < len(s); i++ {if s[i] == ' ' {spaceCount++}}// 为什么是*2,而不是*3,因为原先的空格也占一个空格。tmp := make([]byte, spaceCount*2)by = append(by, tmp...) // 用...展开切片// b是原切片的指针,e是扩容后的指针。从后往前扫,不断的赋值for b, e := len(s)-1, len(by)-1; e > b;  {if (by[b] == ' ') {by[e] = '0'by[e-1] = '2'by[e-2] = '%'e -= 2} else {by[e] = by[b]}b--e--}return string(by)
}
http://www.lryc.cn/news/215831.html

相关文章:

  • Pure-Pursuit 跟踪双移线 Gazebo 仿真
  • Selenium学习(Java + Edge)
  • 项目管理-组织战略类型和层次讲解
  • 面试算法50:向下的路径节点值之和
  • dbeaver查看表,解决证书报错current license is non-compliant for [jdbc]
  • 网络安全进阶学习第二十一课——XXE
  • 如何将 ruby 打包类似于jdk在另一台相同架构的机器上面开箱即用
  • vue封装独立组件:实现分格密码输入框/验证码输入框
  • 从2D圆形到3D椭圆
  • Linux CentOS7.9安装OpenJDK17
  • 计算机网络第4章-网络层(1)
  • 单元测试学习
  • python编写接口测试文档(以豆瓣搜索为例)
  • C++查看Class类结构
  • appium如何连接多台设备
  • VUE el-form组件不绑定model时进行校验
  • 计算机视觉的监督学习与无监督学习
  • Linux-lvds接口
  • Android 自定义View一
  • 11、电路综合-集总参数电路结构的S参数模型计算与Matlab
  • 计算机网络--真题
  • java毕业设计基于ssm的招聘求职网站
  • 【JavaEE初阶】 初识网络原理
  • LeetCode题解:993. 二叉树的堂兄弟节点,BFS,JavaScript,详细注释
  • 在python中加载tensorflow-probability模块和numpy模块
  • t2017递推2猴子摘桃
  • 呼吸灯【FPGA】
  • Codeforces 1855E 数学期望 + DP
  • 5-1CComplex运算符重载为友元
  • Vue3.0 watch和watchEffect监听器:VCA