DAY08

60 阅读1分钟

第四章 字符串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(' ');