LeetCode[541]反转字符串Ⅱ

思路:

题目给我们加了几个规则,剩余长度小于2k,大于等于k就反转k个,小于k就全部反转,我们按照这个逻辑来就行。

第一就是大于等于k就反转k个,我们for循环肯定是i+=2k了,接下来就是判断是否大于等于k,大于等于就反转,头是i, 尾是i+k。

第二就是小于k,我们就直接头是i,尾是长度-1

代码:

java 复制代码
class Solution {
    public String reverseStr(String s, int k) {
        char[] ch = s.toCharArray();

        for (int i = 0; i < ch.length; i += 2 * k) {

            if (i + k <= ch.length) {
                reverse(ch, i, i + k - 1);
                continue;
            }

            reverse(ch, i, ch.length - 1);

        }
        return new String(ch);
    }

    public void reverse(char[] ch, int begin, int end) {
        while (begin < end) {
            char temp = ch[begin];
            ch[begin] = ch[end];
            ch[end] = temp;
            begin++;
            end--;
        }
    }
}
相关推荐
谢道韫6663 分钟前
37-串联所有单词的子串
开发语言·算法·c#
爱编程的小新☆5 分钟前
2025年第十六届蓝桥杯省赛JavaB组真题回顾
算法·职场和发展·蓝桥杯
callJJ8 分钟前
Dijkstra算法求解最短路径—— 从零开始的图论讲解(2)
java·数据结构·算法·intellij-idea·图论·dijkstra·图搜索算法
uhakadotcom17 分钟前
入门教程:Keras和PyTorch深度学习框架对比
后端·算法·面试
PHASELESS41139 分钟前
Java二叉树深度解析:结构、算法与应用实践指南
java·开发语言·数据结构·算法
牧木江40 分钟前
【从C到C++的算法竞赛迁移指南】第二篇:动态数组与字符串完全攻略 —— 写给C程序员的全新世界
c语言·c++·经验分享·笔记·算法
前端 贾公子1 小时前
力扣 283 移动零的两种高效解法详解
算法
学习2年半2 小时前
回溯算法:List 还是 ArrayList?一个深拷贝引发的思考
数据结构·算法·list
烁3472 小时前
每日一题(小白)暴力娱乐篇30
java·数据结构·算法·娱乐
Wils0nEdwards5 小时前
Leetcode 独一无二的出现次数
算法·leetcode·职场和发展