每日一题 <反转字符串 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

目录
相关文章
|
4月前
|
Java
每日一题《剑指offer》字符串篇之替换空格
每日一题《剑指offer》字符串篇之替换空格
31 0
每日一题《剑指offer》字符串篇之替换空格
|
4月前
|
算法
六六力扣刷题字符串之反转字符串2
六六力扣刷题字符串之反转字符串2
16 0
|
4月前
|
机器学习/深度学习 NoSQL 算法
六六力扣刷题字符串之反转字符串
六六力扣刷题字符串之反转字符串
33 0
|
7月前
剑指offer-4.替换空格
剑指offer-4.替换空格
18 0
|
10月前
每日一题——反转字符串—II
每日一题——反转字符串—II
|
10月前
每日一题——反转字符串—I
每日一题——反转字符串—I
|
10月前
每日一题——替换空格
每日一题——替换空格
|
10月前
|
存储 C++
剑指offer 04. 替换空格
剑指offer 04. 替换空格
47 0
|
10月前
|
算法 Java C++
反转字符串(力扣刷题)
反转字符串(力扣刷题)
|
10月前
|
C++
反转字符串II(力扣刷题)
反转字符串II(力扣刷题)