栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【LeetCode】541. 反转字符串 II(错题2刷)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【LeetCode】541. 反转字符串 II(错题2刷)

  • 思路
    这道题首先要明确不同的情况做不同的操作,(1)当少于k全部反转;(2)当大于k小于2k,反转前k个;(3)当等于2k,反转前k个。
    整体思路就是用双指针,一个指头,一个指尾然后进行计数。
class Solution {
    void reverse(char[] arr, int start, int end) {
        char temp;
        while (start < end) {
            temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }

    public String reverseStr(String s, int k) {
        int len = s.length();
        char[] arr = s.toCharArray();
        int start = 0, i;
        for (i = 0; i < len; i++) {
            // 等于2k
            if (i - start + 1 == 2 * k) {
                reverse(arr, start, start + k - 1);
                start = i + 1;
            }
        }
        // 小于k
        if (i - start < k) {
            reverse(arr, start, i - 1);
            return new String(arr);
        }
        // 大于k小于2k
        if (i - start < 2 * k) {
            reverse(arr, start, start + k - 1);
            return new String(arr);
        }
        return new String(arr);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691207.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号