题目:
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入:s = "abcdefg", k = 2 输出:"bacdfeg"
思路:
跟着题目意思走,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符(可调用344中的反转函数),其他做剪枝处理。
class Solution { public String reverseStr(String s, int k) { char[] ch = s.toCharArray(); for(int i=0;i<ch.length;i+=2*k){ // 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符 if (i + k <= ch.length) { reverse(ch, i, i + k -1); continue; } // 3. 剩余字符少于 k 个,则将剩余字符全部反转 reverse(ch, i, ch.length - 1); } return new String(ch); } public void reverse(char[] ch,int i,int j){//反转字符串 while(i<j){ char temp=ch[i]; ch[i]=ch[j]; ch[j]=temp; i++; j--; } } }
标签:字符,String,反转,力扣,541,字符串,个字符,2k From: https://www.cnblogs.com/cjhtxdy/p/16980606.html