复习Day12:字符串01:344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用CLion了,使用leetcode自带的IDE模拟面试环境。

344. 反转字符串

没啥好说的,双指针两面夹击。

541. 反转字符串II

这题的反转规则是这样的:

给定一个字符串 s 和一个整数 k,从字符串开头算起,
每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

这题主要是要考虑很多情况。总的模拟来说不难。

剑指Offer 05.替换空格

这题就是把字符串中的“ ”转换成%20,最简单的就是重新创建一个字符串存答案。这里探究不用创建新字符串的方法。

首先统计空格个数,将原字符串的size扩充到size + 2 * n。

然后从后往前使用快慢指针进行填充。

151. 翻转字符串中的单词

这题是这样翻转的:

输入:s = "the sky is blue"
输出:"blue is sky the"

首先要去掉所有多余的空格(题目中说可能含有多余的空格)

可以先全部翻转变成:

eulb si yks eht

再对每个单词做翻转:

blue is sky the

48. 旋转图像

这题的要求是这样:

复习Day12:字符串01:344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串_第1张图片

方法就是:先转置,再逐行反转。

剑指Offer58-II.左旋转字符串

这题的规则是:

示例 1:
输入: s = "abcdefg", k = 2
输出: "cdefgab"

相当于字符串向左平移k个单位。

解法分两步:

  • 整体翻转字符串变成gfedcba;
  • 分两部分再反转, 一个[0, len - k], 一个[k ,end()]

你可能感兴趣的:(数据结构与算法(二刷),数据结构)