2024年7月10日
题344. 翻转字符数组
记得用双指针,时间复杂度最低。
题541. 反转字符串II
首先自己实现一个String的reverse函数方便后面用,记得字符数组和字符串的互转方式。
然后计算有多少组2k,分组处理即可。
class Solution {
public String reverseStr(String s, int k) {
//计算有几组2K
int len = s.length();
int time = len/(2*k);
int left = len%(2*k);//最后一组
for(int i=0;i<time;i++){
//区间就是substring(i,i+k);
String xx = s.substring(i*2*k,i*2*k+k);
xx = reverse(xx);
s = s.substring(0,i*2*k)+xx+s.substring(i*2*k+k,len);
}
//最后一个区间
if(left<k){
s = s.substring(0,time*2*k)+reverse(s.substring(time*2*k,len));
}else{
s = s.substring(0,time*2*k)+reverse(s.substring(time*2*k,time*2*k+k))+s.substring(time*2*k+k,len);
}
return s;
}
public String reverse(String s){
int i=0;
int j=s.length()-1;
char[] x = s.toCharArray();
while(i<=j){
char t = x[i];
x[i] = x[j];
x[j] = t;
i+=1;
j-=1;
}
return new String(x);
}
}
卡码网:题54. 替换数字
这题熟练使用String的相关切分API即可。暂时先不考虑双指针优化。