力扣541. 反转字符串 II

思路:题目的意思就是每2k个字符进行一次循环访问,如果个数小于k就全部反转,如果大于k则只反转k个字符;

java 复制代码
class Solution {
    public String reverseStr(String s, int k) {
        
        char[] charArray = s.toCharArray();
        int length = charArray.length;
        //每次2k,2k地访问
        for(int i=0;i<length;i+=2*k){
            //剩余的长度如果小于k,则剩余的全部交换
            if(length-i<k){
                revese(charArray,i,length);
            }else {
                //大于等于k,则只交换到i+k
                revese(charArray,i,i+k);
            }
        }
		//字符数组转为String
       return new String(charArray);
    }

//反转某段数组,左闭右开
 private void revese(char[] charArray, int left, int right){
    int loop = (right-left)/2;//循环次数,交换次数
        right--;//最大下标
        while(loop-- > 0){
            char temp = charArray[right];
            charArray[right--] = charArray[left];
            charArray[left++] = temp;
        }
 }

}
相关推荐
暮冬-  Gentle°5 小时前
移动设备上的C++优化
开发语言·c++·算法
2401_874732535 小时前
C++中的装饰器模式高级应用
开发语言·c++·算法
季明洵6 小时前
回溯介绍及实战
java·数据结构·算法·leetcode·回溯
m0_662577976 小时前
模板编译期哈希计算
开发语言·c++·算法
m0_662577976 小时前
C++代码静态检测
开发语言·c++·算法
阿贵---6 小时前
编译器命令选项优化
开发语言·c++·算法
add45a6 小时前
分布式计算C++库
开发语言·c++·算法
2401_894241926 小时前
基于C++的数据库连接池
开发语言·c++·算法
阿贵---6 小时前
C++中的适配器模式
开发语言·c++·算法
酉鬼女又兒6 小时前
零基础快速入门前端JavaScript 浏览器环境输入输出语句全解析:从弹框交互到控制台调试(可用于备赛蓝桥杯Web应用开发赛道)
前端·javascript·职场和发展·蓝桥杯·js