leetcode541:反转字符串II

反转字符串II

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

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
java 复制代码
public String reverseStr(String s, int k) {
        StringBuilder res = new StringBuilder();
        int start = 0;
        while(start + k<=s.length()){
            //n - n+k
            res.append(reverse(s.substring(start, start + k)));
            if(start + 2*k<=s.length()){
                //n+k+1 - n+2k
                res.append(s.substring(start+k,start+2*k));
            }else{
                res.append(s.substring(start+k));
            }
            start += 2*k;
        }
        if (start<s.length()) {
            res.append(reverse(s.substring(start)));
        }
        return res.toString();
    }

    String reverse(String s){
        int start = 0;
        int end = s.length()-1;
        char[] arr = s.toCharArray();
        char tmp;
        while(start < end){
            tmp = arr[start];
            arr[start] = arr[end];
            arr[end] = tmp;
            start++;
            end--;
        }
        return new String(arr);
    }

双指针

相关推荐
Wang's Blog1 小时前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时2 小时前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
鹿角片ljp4 小时前
KV Cache 解析
java·算法
captain3764 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫4 小时前
意图识别置信度和检索重排的分数
java
caoerzhong5 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
程序员JerrySUN5 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
Joy T6 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
估值探索者6 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘