非常简单的一道题,写不出来的话可以休息了。
class Solution {
public void reverseString(char[] s) {
int len = s.length;
for(int i=0;i < len/2;i++){
char temp = s[i];
s[i] = s[len-i-1];
s[len-i-1] = temp;
}
}
}
首先要清楚这道题要求,看着复杂其实确实挺复杂的(英语课拿笔模拟了好久)
- 首先就是循环条件怎么写,不要习惯写i++
- 然后就是判断条件,可以模拟几次,2k个一组,然后交换前k个,最后一组单独处理一下。
- swap函数也很重要
ps:字符串是不可更改的,所以先用toCharAray方法转化为字符数组,然后再new一个新的字符串对象,最后return结果。
class Solution {
public String reverseStr(String s, int k) {
int len = s.length();
char[] arr = s.toCharArray();
for (int i = 0; i < len; i += 2 * k) { 画图可以看一下过程
if (len - i >= k) {
swap(arr, i, i + k - 1);
} else {
swap(arr, i, len - 1);
}
}
String result = new String(arr);
return result;
}
public void swap(char[] s, int m, int n) {
int len = n - m + 1;
for (int i = 0; i < len / 2; i++) {//while(m<n)
char temp = s[m];
s[m] = s[n];
s[n] = temp;
m++;
n--;
}
}
}