每日一题 <反转字符串 II>

简介: 每日打卡

image.png

来自力扣的题目,在限定的范围内根据规则进行字符串的反转,不妨以限定条件将数组分割成m个部分,之后根据规则进行反转,C++提供了revese函数帮助我们实现,传入反转范围的开头与结尾就能够使用。

由于是以2k作为范围的限定,在for循环时就可以每次加上2k,这样子就可以圈定每次范围的距离。

最后在反转的时候,可能会出现边界的问题,加上正常反转一共有三种情况,但是正常反转与剩余字符小于2k大于k的效果一样,因此只要确保剩余字符少于k的时候有另一种运行操作。

由此在反转时,若i+k小于n那么则说明剩余字符是大于k个的,因此正常反转,否则反转边界限定至数组结尾。

class Solution {
public:
string reverseStr(string s, int k) {
    int n = s.length();
    for (int i = 0; i < n; i += 2 * k) {
        reverse(s.begin() + i, s.begin() + min(i + k, n));
    }
    return s;
}
};

image.gif

目录
相关文章
|
3月前
|
Java
每日一题《剑指offer》字符串篇之替换空格
每日一题《剑指offer》字符串篇之替换空格
46 0
每日一题《剑指offer》字符串篇之替换空格
|
3月前
牛客网-替换空格
牛客网-替换空格
26 0
|
3月前
面试题05-替换空格(LeeCode)
面试题05-替换空格(LeeCode)
24 0
|
9月前
|
算法
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
52 0
|
11月前
剑指offer-4.替换空格
剑指offer-4.替换空格
26 0
|
12月前
|
算法 索引
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
每日一题——反转字符串—II
每日一题——反转字符串—II
|
存储 C++
剑指offer 04. 替换空格
剑指offer 04. 替换空格
60 0