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

双指针

相关推荐
Carsene1 天前
开篇:我们距离理想的 Java SQL DSL 还有多远?
java·sql
敖正炀1 天前
集合-List-LinkedList
java
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第9题:HashMap根据key查询元素的时间复杂度是多少
java·开发语言·数据结构·后端·面试·哈希算法·哈希表
invicinble1 天前
对于java面向对象的知识
java·开发语言
铭彩色1 天前
refresh token(保证access token获取及用户安全)
java·安全
2501_913061341 天前
网络原理知识(6)
java·网络·网络协议·面试
invicinble1 天前
java面向对象的学习主线
java·开发语言·学习
Devin~Y1 天前
大厂Java面试实战:Spring Boot/Cloud + Redis/Kafka + K8s + RAG/Agent 追问全流程(小Y翻车记)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
桌面运维家1 天前
vDisk虚拟磁盘隐藏指定系统操作指南
java·开发语言
Lyyaoo.1 天前
JWT 令牌(待更新)
java·前端·javascript