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

双指针

相关推荐
停水咋洗澡3 分钟前
Redis Sentinel高可用实战:主从自动故障转移
java·redis·sentinel
ch.ju5 分钟前
Java程序设计(第3版)第二章——引用数据类型:String
java
yaoxin52112320 分钟前
376. Java IO API - 使用 Globbing 和自定义 Filter 过滤目录内容
java·开发语言·python
手握风云-21 分钟前
JavaEE 初阶第三十一期:JVM,一次Full GC的架构级思考(下)
java·java-ee
Mr YiRan23 分钟前
JNI技术之手写JNIEnv与静态缓存与native异常
java·c++
lifallen28 分钟前
Flink Agents:Python 执行链路与跨语言 Actor (PyFlink Agent)
java·大数据·人工智能·python·语言模型·flink
常利兵28 分钟前
Spring Boot配置diff:解锁配置管理新姿势
java·spring boot·后端
小臭希33 分钟前
Git(代码版本控制系统)
java·git·github
北风toto36 分钟前
java进制转换方法
java·开发语言·python
2301_7926748639 分钟前
java学习day27(算法)
java·学习·算法