首页 > 其他分享 >LeetCode | 541 Reverse String II

LeetCode | 541 Reverse String II

时间:2024-08-09 18:50:04浏览次数:5  
标签:right String int II 541 sb 2k left

分析

以2k作为游标步长,反转游标前半部分的字符串,后半部分保留;尾部部分余留长度,如果在[k,2k)直接处理情况跟前述一样,如果不是则直接返回。

在这道题里面,还是回到数组部分提到的循环不变量法则,在2k长度这个游标移动过程中,处理完全一致:2k步长移动,只处理[2i,2i+k]部分,即便是尾部也是如此,不满足就表明2*i+k这个坐标我取不到,就直接退出。

反转字符串用双指针思路完全OK

这个部分的衍生学习,对我而言终点不在于算法,而在于对Java中String相关类进行系统性整理

主方法

    public void reverseStringII(String s, int k) {
        StringBuilder sb = new StringBuilder(s);
        int n = s.length();

        for (int i = 0; i < n; i += 2*k) {
            int left = i;
            int right = Math.min(i + k - 1, n - 1);

            while (left < right) {
                char temp = sb.charAt(left);
                sb.setCharAt(left, sb.charAt(right));
                sb.setCharAt(right, temp);
                left++;
                right--;
            }
        }
        System.out.println(sb.toString());
    }

标签:right,String,int,II,541,sb,2k,left
From: https://www.cnblogs.com/dolphinmind/p/18351337

相关文章

  • LeetCode | 344 Reverse String
    分析字符数组本质上还是数组,双指针本质上是遍历,遍历过程只处理两个独立数据,移动过程将问题分为已经解决和未解决的两部分。在这个题目中值得注意的是,关于字符数组进行数据原地交换采用的是异或^的方式主类packagecom.github.dolphinmind.string;/***@authordolphinmind......
  • 代码随想录算法训练营day08|344.反转字符串,541.反转字符串II,卡码网:54.替换数字
    344.反转字符串题目链接:https://leetcode.cn/problems/reverse-string/description/我的代码:classSolution{public:voidreverseString(vector<char>&s){for(inti=0;i<s.size()/2;i++){chartemp=s[i];s[i]=......
  • iOS开发基础149-由UUIDString引发的思考
    问题1:[[UIDevicecurrentDevice]identifierForVendor].UUIDString什么情况下值会变化?[[UIDevicecurrentDevice]identifierForVendor].UUIDString是一个用于标识设备的唯一标识符(UUID),针对同一应用程序供应商(即同一开发者的应用程序集合),在设备上不变。然而,有一些情况会导致这个......
  • JavaScript toLocaleString() 方法
    定义和用法:toLocaleString()方法可根据本地时间把Date对象转换为字符串,并返回结果。语法:dateObject.toLocaleString()返回值dateObject的字符串表示,以本地时间区表示,并根据本地规则格式化。问题//Javascript中newDate().toLocaleString()在不同浏览器中的结果不一致的解决......
  • StringBuffer作为参数传递
    packagecom.shujia.day11;publicclassstringBufferDemo1{publicstaticvoidmain(String[]args){Strings1="hello";//StringBuffer作为参数传递StringBuffersb1=newStringBuffer("hello");StringBuf......
  • 利用StringBuffer把字符串反转
    packagecom.shujia.day11;importjava.util.Scanner;/*把字符串反转*/publicclassStringBufferDemo6{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println("请输入一个要反转的字符串:");......
  • String和StringBuffer的相互转换
    packagecom.shujia.day11;/*String和StringBuffer的相互转换A->BB->A*/publicclassStringBufferDemo4{publicstaticvoidmain(String[]args){//String->StringBuffer//可以通过构造方法来转换,将String作为参数传递......
  • 3244. 新增道路查询后的最短距离 II
    原题链接题解建桥相当于把区间内的路合并起来,这引导我们用并查集维护可是具体如何实现呢?我们令桥内的所有节点的统一指向最右端点作为首领,然后对于桥内的所有小桥,每次更新完了之后往右边走一格codeclassSolution{public:intfa[2000005];intfinds(intnow){r......
  • StringBuffer的功能,添加、删除、替换、反转(字符串逆序)功能 day11
    packagecom.shujia.day11;/*StringBuffer的功能:添加功能publicStringBufferappend(Stringstr)在末尾处添加字符,返回自身publicStringBufferinsert(intoffset,Stringstr)指定位置添加字符串,返回自身......
  • StringBuffer:可变字符串及构造方法 day11
    packagecom.shujia.day11;/*StringBuffer:可变字符串,这个容器中只能存放字符概述:线程安全,可变的字符序列。字符串缓冲区就像一个String,但可以修改。在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容......