反转字符串II Java
力扣题目链接
基础知识
1.解法一
class Solution {
public String reverseStr(String s, int k) {
StringBuffer res = new StringBuffer();
int length = s.length();
int start = 0;
while(start<length){
//找到k处和2k处
StringBuffer temp = new StringBuffer();
//与length进行判断,如果大于length,就将其置为length
int firstK = (start+k>length) ? length : start + k;
int secondK = (start+2*k>length) ? length : start +2*k;
//无论start在什么位置,至少反转一次
temp.append(s.substring(start,firstK));
res.append(temp.reverse());
//如果firstK与secondK之间有元素,这些元素可以直接存入res
if(firstK<secondK){
res.append(s.substring(firstK,secondK));
}
start += (2*k);
}
return res.toString();
}
}
2.解法二
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
for(int i = 0; i < ch.length; i += 2 * k){
int start = i;
//这里是判断尾数够不够k个来取决end指针的位置
int end = Math.min(ch.length - 1, start + k - 1);
//用异或运算反转
while(start < end){
ch[start] ^= ch[end];
ch[end] ^= ch[start];
ch[start] ^= ch[end];
start++;
end--;
}
}
return new String(ch);
}
}
本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/15859264.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步