第四章 字符串part01
今日任务
● 344.反转字符串
● 541. 反转字符串II
● 卡码网:54.替换数字
详细布置
344.反转字符串
建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数
题目链接/文章讲解/视频讲解:programmercarl.com/0344.%E5%8F…
541. 反转字符串II
建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。
题目链接/文章讲解/视频讲解:programmercarl.com/0541.%E5%8F…
卡码网:54.替换数字
建议:对于线性数据结构,填充或者删除,后序处理会高效的多。好好体会一下。
题目链接/文章讲解:programmercarl.com/kama54.%E6%…
笔记
反转字符串
- 先转换为数组,arr= s.split('')
- 定义左右指针指向头尾;
- 当左小于右,则[arr[left],arr[right]]=[arr[right],arr[left]]; left++;right--
- 转换成字符串返回
反转字符串II
- 转换成数组
- 遍历数组,i每次走2k步,即:for(let i = 0; i<length; i+=2*k)
- 针对每2k个字符定义左右指针来反转前k个字符,同时要判断走完n个2k后剩下的字符个数是否小于k,即:left=i; right = (i+k-1)>=length ? (length-1) : (i+k-1);
- 当左小于右,则[arr[left],arr[right]]=[arr[right],arr[left]]; left++;right--
- 转换成字符串返回
替换数字
直接正则判断:s.replace(/\d/g,'number')
翻转字符串里的单词
同样正则:s.trim().split(' ').reverse().join(' ');