Leetcode 541. 反转字符串 II(可以,已解决)
Published on 2022-05-31 21:25 in 分类: C/C++ with 萧海~
分类: C/C++

Leetcode 541. 反转字符串 II(可以,已解决)

    在这里插入图片描述
    给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

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

    示例 1:

    输入:s = "abcdefg", k = 2
    输出:"bacdfeg"

    示例 2:

    输入:s = "abcd", k = 2
    输出:"bacd"

    提示:

    • 1 <= s.length <= 10^4
    • s 仅由小写英文组成
    • 1 <= k <= 10^4

    Code:

    class Solution {
    public:
    string reverseStr(string s, int k) {
    if(2*k>s.length())
    {
    if(k>=s.length())
    {
    reverse(s.begin(),s.end());
    }
    else
    reverse(s.begin(),s.begin()+k);
    return s;
    }
    else
    {
    string res="";
    while(1)
    {
    string sub=s.substr(0,k);
    reverse(sub.begin(),sub.end());
    int leftlen=s.length()-2*k;
    if(leftlen>=k&&leftlen<=2*k)
    {
    string sub2=s.substr(k,k);
    string sub3=s.substr(2*k);
    res+=sub;
    res+=sub2;
    reverse(sub3.begin(),sub3.begin()+k);
    res+=sub3;
    return res;
    }
    if(leftlen<k)
    {
    string sub2=s.substr(k,k);
    string sub3=s.substr(2*k);
    res+=sub;
    res+=sub2;
    reverse(sub3.begin(),sub3.end());
    res+=sub3;
    return res;
    }
    else
    {
    res+=sub;
    res+=s.substr(k,k);
    s=s.substr(2*k);
    }
    }
    }
    return "";
    }
    };
    posted @   萧海~  阅读(8)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    点击右上角即可分享
    微信分享提示
    电磁波切换