
解法:
不需要啥解法,一个循环就结束了。
class Solution {
public void reverseString(char[] s) {
int start=0;
int end=s.length-1;
while(start<end){
char temp=s[end];
s[end]=s[start];
s[start]=temp;
start++;
end--;
}
}
}

解法:
分为前k和k到2k,两个区间去操作,前面的操作都是一样的仅仅需要最后一点进行判断。
最后一点如果小于k,全部反转,那么我们可以让startk到结尾。
如果大于k小于2k,那么stark逻辑正常,我们让endk到结尾在添加就好了。
class Solution {
public String reverseStr(String s, int k) {
int leng=s.length();
int start=0;
StringBuilder sb=new StringBuilder();
while(start<leng){
StringBuilder temp=new StringBuilder();
int startk=(start+k>leng)?leng:start+k;
int endk=(start+2*k>leng)?leng:start+2*k;
//每次循环都会创建一个新的temp容器,局部代码块
temp.append(s.substring(start,startk));
sb.append(temp.reverse());
if(startk<endk){
sb.append(s.substring(startk,endk));
}
start+=2*k;
}
String result=sb.toString();
return result;
}
}
文章提供了两种Java解法来反转字符串。第一种是简单的双指针交换法,通过一个循环即可完成。第二种方法处理了反转部分的问题,将字符串分为前后两段,在每段内反转,并考虑边界条件,如反转区域超出原字符串长度的情况。
419

被折叠的 条评论
为什么被折叠?



