目录

一.每次替换从 1 个字符变成 3 个字符

二.正则表达式

1.基础

2.进阶

①捕获分组

②非捕获分组

③回溯引用

④先行断言:从左往右看

⑤后行断言:从右往左看

三.C++ earse()和insert()函数

四.C++ replace()函数


一.每次替换从 1 个字符变成 3 个字符

class Solution
{public String replaceSpace(String s) {int length = s.length();char[] array = new char[length * 3];int size = 0;for (int i = 0; i < length; i++) {char c = s.charAt(i);if (c == ' ') {array[size++] = '%';array[size++] = '2';array[size++] = '0';} else {array[size++] = c;}}String newStr = new String(array, 0, size);return newStr;}
}

二.正则表达式

return s.replace(/\s/g, '%20')

1.基础

①/[Pp]ython/g:匹配中括号里的元素任意一个

Python  python   Ppython

 /[0-9]/g (快捷方式:/\d/g) :匹配数字

/[a-z]/g  /[A-Z]/g:小写字母,大写字母

/[^0-9]/g:不会匹配数字(^放区间是取反,快捷方式:/\D/g)

③ /\-/g:匹配横杠

④/\bmaster\b/g:单词边界

amaster-master 123 -xxx master"mastae

⑤/^python/g:匹配以python开头的数据

    /python$/g:匹配以python结尾的数据

⑥/....../g:匹配任意字符(不能匹配换行符)

python

⑦/honu?r/g:u可出现可不出现

honur   honr

⑧/\d{9}/g:匹配9个前面的数字

123   123456789

   /\d{8,9}/g:匹配8个或9个前面的数字

/\d{8,9}?/g:?是非贪婪模式。令前面的标记慵懒,使其尽可能少的匹配字符

/\d{3,}/g:匹配3个以上的数字

快捷方式:/\d+/g == /\d{1,}/g(1个到无数个)

/\d*/g == /\d{0,}/g(0个到无数个)

2.进阶

①捕获分组

    /(\d{4})-(\d{6})/g:()被称为捕获分组。从匹配好的数据中提取关键数据

0731-828333

②非捕获分组

(?:表达式)

③回溯引用

HTML代码:0123<font>提示</font>abcd

/<\w+>.*?</\1>/g

④先行断言:从左往右看

1>正向先行断言

(?=表达式):所在位置右侧必须能匹配表达式

/喜欢(?=你)/g

我喜欢你  我喜欢  我喜欢我 喜欢 喜欢你

2>反向先行断言

(?!表达式):保证右边不能出现某字符

/喜欢(?!你)/g

我喜欢你  我喜欢  我喜欢我 喜欢

⑤后行断言:从右往左看

1>正向后行断言

(?<=表达式):从某个位置向左看,所在位置左侧必须能匹配表达式

/(?<=我)喜欢(?=你)/g

我喜欢你  喜欢你  我喜欢我自己

2>反向后行断言

(?<!表达式):所在位置左侧不能匹配表达式

/(?<!我)喜欢(?!你)/g

我喜欢你  喜欢你  喜欢  我喜欢我自己

三.C++ earse()和insert()函数

//s.erase(pos,n):删除从pos开始的n个字符
//s.erase(pos):删除pos处的一个字符(pos是string类型的迭代器)
//s.insert(pos,str):在原串下标为pos的字符前插入字符串str
//s.insert(pos, str, pos1, n):str从下标为pos1开始数的n个字符插在原串下标为pos的字符前
//s.insert(pos, n, c):在原串下标为pos的字符前插入n个字符cclass Solution
{
public:string replaceSpace(string s) {for(int i = 0;s[i]!='\0'; i++){if(s[i] == ' '){s.erase(i,1);  // 删除i之后的1个字符s.insert(i,"%20"); //在i的后面插入字符串i +=2; // +2 然后循环 +1 = +3}}return s;}
};

四.C++ replace()函数

//s.replace():在字符串中用一些字符替换另一些字符class Solution
{
public:string replaceSpace(string s) {int n = string::npos;while((n = s.find(' ')) != string::npos) {s.replace(n, 1, "%20");}return s;}
};

剑指 Offer 05. 替换空格无标题(正则表达式)相关推荐

  1. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

  2. 《LeetCode力扣练习》剑指 Offer 05. 替换空格 Java

    <LeetCode力扣练习>剑指 Offer 05. 替换空格 Java 一.资源 题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输 ...

  3. 剑指 Offer 05. 替换空格 简单

    剑指 Offer 05. 替换空格 问题: 思路: 1. 方法(一):使用额外空间 2. 在原空间上扩展,利用双指针. 问题: 请实现一个函数,把字符串 s 中的每个空格替换成"%20&qu ...

  4. 力扣-图解算法数据结构-剑指 Offer 05. 替换空格

    题目要求 力扣题解 代码 /*** @program: mydemo* @description: 剑指 Offer 05. 替换空格* @author: Mr.zeng* @create: 2021 ...

  5. 剑指 Offer 05. 替换空格(完整代码)

    文章目录 剑指 Offer 05. 替换空格 1. 核心代码 2. 完整代码 总结 剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". ...

  6. 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词

    剑指 Offer 58 - II. 左旋转字符串 把前k个字符移动到结尾 翻转前k个字符,翻转剩余字符 翻转整个字符串 class Solution { public:void reverse(str ...

  7. ~4.1 剑指 Offer 05. 替换空格

    剑指 Offer 05. 替换空格 题目描述 思路 源代码 题目描述 思路 C++: 在 C++ 语言中, string 被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改. 思路: ...

  8. Suzy找到实习了吗Day 8 | 字符串开始啦 344. 反转字符串,541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,左旋转字符串

    这里是目录 344. 反转字符串 题目 Solution 541. 反转字符串 II 题目 Solution(v1) Solution(v2) 剑指 Offer 05. 替换空格 做题记录 151. ...

  9. 剑指 Offer 05. 替换空格 三种方法

    剑指 Offer 05. 替换空格(点击立即答题) 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy.& ...

最新文章

  1. 恕我直言,IDEA的Debug,你可能只用了10%
  2. yolov3安卓实现_YOLOv3 的 TensorFlow 实现,GitHub 完整源码解析
  3. OpenShift 4 - 使用Operator安装Gitea
  4. 钱花了才是自己的你们觉得这句话对吗?
  5. (转)李嘉诚:成功源于花90%时间考虑失败
  6. 推荐 Word、EXCEL必备工具箱
  7. 安捷伦频谱仪的使用方法图解_安捷伦N9020A频谱仪操作说明
  8. 【CS106】编译原理笔记4 —— 用普遍性泵引理(Pumping lemma)证明语言的正则性
  9. Html的页面演变史02
  10. mac下使用自带的bash或Cyberduck软件链接服务器
  11. session到底是什么
  12. h5页面跳转到微信小程序之利用URL Scheme接口
  13. Java工程师学习指南(2019最新版)
  14. java socket解决半包、粘包问题
  15. 千万数据去重_基于 Flink 的百亿数据去重实践
  16. three.js textureLoader加载图片失败
  17. AspectJ编译器织入与SpringAOP的运行期织入
  18. 接口的基本语法与应用28,29
  19. php去除字符串空格
  20. C语言-蓝桥杯-算法训练 印章

热门文章

  1. html+css+js实现的图片轮播图下方配文字可变图片可点击
  2. 中泰语快速进行在线翻译的方法
  3. 2018.11.03 NOIP模拟 地球发动机(线性dp)
  4. 水溶性/油溶性四氧化三铁(Fe3O4)纳米颗粒
  5. ERP管理系统规划四大注意事项
  6. wireshark手机抓包分析(一)
  7. 2020.1.13 C语言学习 结构体+结构体数组+结构体指针
  8. Centos7 docker完美卸载
  9. “AI+停车”数百亿的市场等你来加入
  10. IIS的安装、配置与测试