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);
    }

双指针

相关推荐
xuhaoyu_cpp_java8 分钟前
SpringBoot学习(四)
java·经验分享·spring boot·笔记·学习
plainGeekDev34 分钟前
kapt 替换为 KSP
android·java·kotlin
蜡台43 分钟前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy
程序员天天困1 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·后端
要开心吖ZSH1 小时前
AI医疗分诊与健康咨询助手agent开发——(4-2)从零到一:我给AI医疗分诊助手加了个“知识库大脑“,终于搞懂了RAG是什么
java·docker·agent·医疗·rag
怎么比啊都是大神3 小时前
关于==null、isEmpty()和StrUtil.isBlank()
java
唐青枫3 小时前
Java Neo4j 实战指南:从图模型、Cypher 到 Spring Boot 关系查询
java
观远数据3 小时前
从离线开发到实时同步:DataFlow如何支撑企业级数据治理闭环
java·windows·microsoft·excel
今天AI了吗4 小时前
Hermes Agent 搭建全流程:从本机试跑到可持续运行的个人 AI Agent
java·人工智能·python·学习·embedding
春卷同学4 小时前
032-关系型数据库在记账应用中的建模与查询优化
java·jvm·数据库