简单题我重拳出击,复杂题我唯唯诺诺!!!
思路 :
思路很简单,就是定义两个指针,前后依次交换数组中的元素,之后头指针++,尾指针- -,直到不满足循环条件退出循环
代码如下:
class Solution {
public void reverseString(char[] s) {
int i = 0, j = s.length - 1;
while(i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
}
}
做完上边这个题之后,我们再看下边这个!!!
思路如下:
首先需要把字符串变成一个字符数组,之后对字符数组进行操作。每2k个元素操作一次,假如要操作的元素不足k个,我们直接对这些所有的元素进行操作,遍历完之后,返回一个新的字符串。
代码如下:
class Solution {
public String reverseStr(String s, int k) {
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i += 2 * k) {
int start = i;
int end = arr.length-1 < start+k-1 ? arr.length-1 : start+k-1;
while(start < end) {
char temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
return new String(arr);
}
}
假期第一天,就做了这两道题,哈哈哈,属实是划水摸鱼了,以后慢慢提上效率来了得,奥里给给给!!!
|