Day8
双指针,交换的时候有两种方法,一种是常用的创建一个中间变量,另一种方法是通过异或运算
class Solution {
public void reverseString(char[] s) {
for(int i = 0 ; i < s.length/2 ; i++){
s[i] ^= s[s.length - i - 1];
s[s.length - i - 1] ^= s[i];
s[i] ^= s[s.length - i - 1];
}
}
}
-
模拟-使用可变的字符序列
使用start
firstK
secondK
分别来标记第一个k区间和第二个k区间,使用三元运算符判断其是否满足题目中的两个条件(大于k小于2k|小于k),将需要逆转的字符串添加到可变的字符序列中,将反转后的字符串和[k,2k]的字符串添加到另一个可变的字符串序列中,最后使用toString()
返回表示此序列中数据的字符串
-
模拟-每隔2k个反转前k个
好绝!一行代码点亮你
int end = Math.min(ch.length - 1, start + k - 1);
-
StringBuilder/Stringbuffer
-
双指针
-
移除多余空格 + 将整个字符串反转 + 将每个单词反转
-
内置函数 - 使用语言特性
使用一个StringBuffer轻松解决。