本文主要是介绍力扣541. 反转字符串 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路:题目的意思就是每2k个字符进行一次循环访问,如果个数小于k就全部反转,如果大于k则只反转k个字符;
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+krevese(charArray,i,i+k);}}//字符数组转为Stringreturn 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;}}}
这篇关于力扣541. 反转字符串 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!