【陪伴式刷题】Day 7|字符串|541.反转字符串 II(Reverse String II)

刷题顺序按照代码随想录建议

题目描述

英文版描述

Given a string s and an integer k, reverse the first k characters for every 2k characters counting from the start of the string.

If there are fewer than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and leave the other as original.

Example 1:

Input: s = "abcdefg", k = 2

Output: "bacdfeg"

Example 2:

Input: s = "abcd", k = 2

Output: "bacd"

Constraints:

  • 1 <= s.length <= 10^4
  • s consists of only lowercase English letters.
  • 1 <= k <= 10^4

英文版地址

leetcode.com/problems/re...

中文版描述

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例 1:

输入: s = "abcdefg", k = 2

输出: "bacdfeg"

示例 2:

输入: s = "abcd", k = 2

输出: "bacd"

提示:

  • 1 <= s.length <= 10^4
  • s 仅由小写英文组成
  • 1 <= k <= 10^4

中文版地址

leetcode.cn/problems/re...

解题方法

俺这版

java 复制代码
class Solution {
    public String reverseStr(String s, int k) {
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i += 2 * k) {
            reverse(chars, i, Math.min(chars.length, i + k)-1);
        }
        return new String(chars);

    }

    private void reverse(char[] chars, int fromIndex, int toIndex) {
        int right = toIndex;
        int left = fromIndex;
        while (left < right) {
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
        }
    }
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串 s 的长度。
  • 空间复杂度:O(1),O(1)或 O(n),取决于使用的语言中字符串类型的性质。如果字符串是可修改的,那么我们可以直接在原字符串上修改,空间复杂度为 O(1),否则需要使用 O(n)的空间将字符串临时转换为可以修改的数据结构(例如数组),空间复杂度为 O(n)
相关推荐
Jackson@ML1 小时前
2026最新版Sublime Text 4安装使用指南
java·python·编辑器·sublime text
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 校园闲置物品交易平台的设计与实现为例,包含答辩的问题和答案
java·eclipse
chilavert3181 小时前
技术演进中的开发沉思-326 JVM:内存区域与溢出异常(上)
java·jvm
纪莫2 小时前
技术面:如何让你的系统抗住高并发的流量?
java·redis·java面试⑧股
夏鹏今天学习了吗2 小时前
【LeetCode热题100(90/100)】编辑距离
算法·leetcode·职场和发展
spencer_tseng2 小时前
Unlikely argument type for equals(): JSONObject seems to be unrelated to String
java·equals
爱敲代码的小鱼2 小时前
事务核心概念与隔离级别解析
java·开发语言·数据库
小冷coding2 小时前
【Java】遇到微服务接口报错导致系统部分挂掉时,需要快速响应并恢复,应该怎么做呢?如果支付服务出现异常如何快速处理呢?
java·开发语言·微服务
一个处女座的程序猿O(∩_∩)O3 小时前
Nacos 中的 Namespace 深度解析:实现多租户隔离的关键机制
java
HeisenbergWDG3 小时前
线程实现runnable和callable接口
java·开发语言