给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。文章来源:https://www.toymoban.com/news/detail-617713.html
解答:文章来源地址https://www.toymoban.com/news/detail-617713.html
class Solution {
public String reverseStr(String s, int k) {
StringBuffer r = new StringBuffer();
int len = s.length();
for(int i = 0; i < len; i = i+2*k){
int left = len - i;
StringBuffer t = new StringBuffer();
if(left < k){ //如果剩余字符少于 k 个,则将剩余字符全部反转。
t.append(s.substring(i, len));
r.append(t.reverse());
}else if( (left<2*k) && (left>=k) ){ //如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
t.append(s.substring(i, i+k));
r.append(t.reverse());
r.append(s.substring(i+k, len));
}else if(i%(2*k) == 0){
t.append(s.substring(i, i+k));
r.append(t.reverse());
r.append(s.substring(i+k, i+2*k));
}
}
return r.toString();
}
}
到了这里,关于【leetcode】541. 反转字符串 II的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!