当前位置: 首页 > 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 := 0
    length := 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 := 0
    for 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)
}

相关文章:

  • 高阶导数与微积分
  • 【python练习】输出字符串的出现次数最多的前三字符,未通过检测
  • 042-第三代软件开发-485通信
  • ubuntu(18.04)中架设HiGlass docker镜像服务,已尝试mcool、bedpe、wig格式文件
  • 最新Ai智能创作系统源码V3.0,AI绘画系统/支持GPT联网提问/支持Prompt应用+搭建部署教程
  • 爬虫之爬虫介绍、requests模块、携带请求参数、url 编码和解码、携带请求头
  • elementUI树节点全选,反选,半选状态
  • 设计模式之观察者模式
  • oracle (9)Storage Relationship Strut
  • 【Linux】虚拟机部署与发布J2EE项目(Linux版本)
  • 解锁AI语言模型的秘密武器 - 提示工程
  • 知心早安问候语,愿你享受美好的时光,幸福快乐每一天
  • 计算机网络第4章-网络层(1)
  • 用逻辑分析仪观察串口Uart数据波形
  • 如何将你的PC电脑数据迁移到Mac电脑?使用“迁移助理”从 PC 传输到 Mac的具体操作教程
  • 在Java和PostgreSQL枚举之间进行转换的通用方法
  • WIN11如何固定文件夹查看方式
  • Java修仙传之神奇的ES(基础使用)
  • Hive常用DDL操作
  • centos7如何使用oxidized备份网络配置
  • html5与css3网页设计论文/杭州seo博客
  • 建网站视频教程/开发外包网站
  • 猎聘做简历的网站收费靠谱吗/seo前景
  • 深圳教育科技网站建设/附近的计算机培训班
  • 网站建设市区/做关键词排名好的公司
  • 湖南省住房与城乡建设厅网站/百度seo怎么样优化