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

双指针

相关推荐
IronMurphy2 小时前
List 经典问
java·开发语言
Jinkxs2 小时前
Resilience4j- 非 Spring 环境集成:纯 Java 项目中的手动配置实现
java·后端·spring
可乐ea2 小时前
【知识获取与分享社区项目 | 项目日记第 23 天】项目梳理下篇:高并发与最终一致性复盘:Redis、Kafka、Outbox、ES 与 RAG 如何协同
java·redis·mysql·elasticsearch·缓存·ai·kafka
小张小张爱学习2 小时前
分布式高频面试题
java·分布式
右耳朵猫AI2 小时前
Java/JVM周刊2026W21 | Java 26发布、JDK 27抢先体验、Spring Boot 4.1预告、GlassFish 8.0.2发布
java·jvm·spring boot
Knight_AL3 小时前
MyBatis 报错:Parameter ‘xxx‘ not found 的原因与解决方案
java·tomcat·mybatis
一条泥憨鱼3 小时前
Java网络编程:Socket通信从入门到起飞
java·开发语言·网络·网络编程
西安邮电大学3 小时前
分布式锁三种实现
java·redis·后端·其他·面试
码不停蹄的玄黓3 小时前
SpringBoot 实现自定义注解
java·spring boot·spring
施棠海3 小时前
自定义并可深度定制的数字滚动选择器完整源代码与相关注意事项
java·开发语言