剑指 Offer 05. 替换空格无标题(正则表达式)
目录
一.每次替换从 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. 替换空格无标题(正则表达式)相关推荐
- 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...
- 《LeetCode力扣练习》剑指 Offer 05. 替换空格 Java
<LeetCode力扣练习>剑指 Offer 05. 替换空格 Java 一.资源 题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输 ...
- 剑指 Offer 05. 替换空格 简单
剑指 Offer 05. 替换空格 问题: 思路: 1. 方法(一):使用额外空间 2. 在原空间上扩展,利用双指针. 问题: 请实现一个函数,把字符串 s 中的每个空格替换成"%20&qu ...
- 力扣-图解算法数据结构-剑指 Offer 05. 替换空格
题目要求 力扣题解 代码 /*** @program: mydemo* @description: 剑指 Offer 05. 替换空格* @author: Mr.zeng* @create: 2021 ...
- 剑指 Offer 05. 替换空格(完整代码)
文章目录 剑指 Offer 05. 替换空格 1. 核心代码 2. 完整代码 总结 剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". ...
- 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词
剑指 Offer 58 - II. 左旋转字符串 把前k个字符移动到结尾 翻转前k个字符,翻转剩余字符 翻转整个字符串 class Solution { public:void reverse(str ...
- ~4.1 剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格 题目描述 思路 源代码 题目描述 思路 C++: 在 C++ 语言中, string 被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改. 思路: ...
- Suzy找到实习了吗Day 8 | 字符串开始啦 344. 反转字符串,541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,左旋转字符串
这里是目录 344. 反转字符串 题目 Solution 541. 反转字符串 II 题目 Solution(v1) Solution(v2) 剑指 Offer 05. 替换空格 做题记录 151. ...
- 剑指 Offer 05. 替换空格 三种方法
剑指 Offer 05. 替换空格(点击立即答题) 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy.& ...
最新文章
- 恕我直言,IDEA的Debug,你可能只用了10%
- yolov3安卓实现_YOLOv3 的 TensorFlow 实现,GitHub 完整源码解析
- OpenShift 4 - 使用Operator安装Gitea
- 钱花了才是自己的你们觉得这句话对吗?
- (转)李嘉诚:成功源于花90%时间考虑失败
- 推荐 Word、EXCEL必备工具箱
- 安捷伦频谱仪的使用方法图解_安捷伦N9020A频谱仪操作说明
- 【CS106】编译原理笔记4 —— 用普遍性泵引理(Pumping lemma)证明语言的正则性
- Html的页面演变史02
- mac下使用自带的bash或Cyberduck软件链接服务器
- session到底是什么
- h5页面跳转到微信小程序之利用URL Scheme接口
- Java工程师学习指南(2019最新版)
- java socket解决半包、粘包问题
- 千万数据去重_基于 Flink 的百亿数据去重实践
- three.js textureLoader加载图片失败
- AspectJ编译器织入与SpringAOP的运行期织入
- 接口的基本语法与应用28,29
- php去除字符串空格
- C语言-蓝桥杯-算法训练 印章
热门文章
- html+css+js实现的图片轮播图下方配文字可变图片可点击
- 中泰语快速进行在线翻译的方法
- 2018.11.03 NOIP模拟 地球发动机(线性dp)
- 水溶性/油溶性四氧化三铁(Fe3O4)纳米颗粒
- ERP管理系统规划四大注意事项
- wireshark手机抓包分析(一)
- 2020.1.13 C语言学习 结构体+结构体数组+结构体指针
- Centos7 docker完美卸载
- “AI+停车”数百亿的市场等你来加入
- IIS的安装、配置与测试