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

双指针

相关推荐
We....3 分钟前
Java 分布式缓存实现:结合 RMI 与本地文件缓存
java·分布式·缓存
2401_8454174511 分钟前
set和map
java·开发语言
所愿ღ15 分钟前
JavaWeb-Servlet总结及JSP
java·笔记·servlet
杨杨杨大侠16 分钟前
Atlas Mapper 教程系列 (4/10):高级映射技巧与类型转换
java·开源·github
杨杨杨大侠18 分钟前
Atlas Mapper 教程系列 (3/10):核心注解详解与基础映射
java·开源·github
tqs_1234529 分钟前
redis zset 处理大规模数据分页
java·算法·哈希算法
尚学教辅学习资料37 分钟前
基于Spring Boot的家政服务管理系统+论文示例参考
java·spring boot·后端·java毕设
杨杨杨大侠38 分钟前
Atlas Log 0.2.0 版本
java·github·apache log4j
快乐肚皮38 分钟前
TransmittableThreadLocal:穿透线程边界的上下文传递艺术
java
渣哥38 分钟前
别再无脑 synchronized 了!Java 锁优化的 7 个狠招
java