力扣541 反转字符串2

题目:

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例:

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

思路:

跟着题目意思走,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符(可调用344中的反转函数),其他做剪枝处理。

复制代码
class Solution {
    public String reverseStr(String s, int k) {
        char[] ch = s.toCharArray();
        
        for(int i=0;i<ch.length;i+=2*k){
            // 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
             if (i + k <= ch.length) {
                reverse(ch, i, i + k -1);
                continue;
            }
            // 3. 剩余字符少于 k 个,则将剩余字符全部反转
            reverse(ch, i, ch.length - 1);
        }
        return new String(ch);
    }

    public void reverse(char[] ch,int i,int j){//反转字符串
        while(i<j){
            char temp=ch[i];
            ch[i]=ch[j];
            ch[j]=temp;
            i++;
            j--;
        }
    }
}
复制代码

 

posted @   壹索007  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示