当前位置: 首页 > article >正文

【Leetcode 每日一题】541. 反转字符串 II

问题背景

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

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

数据约束

  • 1 ≤ s . l e n g t h ≤ 1 0 4 1 \le s.length \le 10 ^ 4 1s.length104
  • s s s 仅由小写英文组成
  • 1 ≤ k ≤ 1 0 4 1 \le k \le 10 ^ 4 1k104

解题过程

直接按照题目要求来模拟就可以,需要注意方法调用时转入的下标要进行修正。

具体实现

class Solution {
    public String reverseStr(String s, int k) {
        char[] chS = s.toCharArray();
        int n = chS.length;
        for (int i = 0; i < n; i += 2 * k) {
            // 这一部分的判断可以简化成 reverse(chS, i, Math.min(i + k, n) - 1);
            if (i + k >= n) {
                reverse(chS, i, n - 1);
            } else {
                reverse(chS, i, i + k - 1);
            }
        }
        return new String(chS);
    }

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

http://www.kler.cn/a/533220.html

相关文章:

  • FastAPI之参数传递和参数校验
  • 【缴纳过路费——并查集】
  • html基本结构和常见元素
  • Ruby 类和对象
  • 请解释 Java 中的 IO 和 NIO 的区别,以及 NIO 如何实现多路复用?
  • Love Tester:探索爱情的深度与维度
  • Vue3 完整学习笔记 - 第二部分
  • Vue.js组件开发-实现广告图片浮动随屏幕滚动
  • LeetCode:115.不同的子序列
  • C++实现有限元三维杆单元计算 Bar3D2Node类(纯自研 非套壳)
  • 在 Ubuntu 22.04 上运行 Filebeat 7.10.2
  • vue2语法速通
  • 猫眼Java开发面试题及参考答案(上)
  • Cassandra的下载与安装
  • Java的String与StringBuilder例题
  • 如何学习大数据治理:轻松上手指南
  • 大语言模型概述
  • Redis的通用命令
  • 98,【6】 buuctf web [ISITDTU 2019]EasyPHP
  • 计算机网络安全与运维的关键 —— 常用端口全解析
  • 【JAVA】Netty使用教程
  • Java 报错:找不到或无法加载主类
  • Maven 项目的基本结构
  • 我们来学人工智能 -- 感悟DeepSeek
  • Llama最新开源大模型Llama3.1
  • Java之线程篇六