344.反转字符串
https://leetcode.cn/problems/reverse-string/submissions/496710761/
class Solution {
public void reverseString(char[] s) {
int length = s.length;
for(int left = 0 ,right = length-1; left<right ; left++ , right--){
char temp = s[left];
s[left] = s[right];
s[right] = temp;
}
}
}
541. 反转字符串II
https://leetcode.cn/problems/reverse-string-ii/description/
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);
}
}
/*在Java中,异或运算可以用于以下几个方面:
交换两个变量的值:通过异或运算可以在不使用额外变量的情况下交换两个变量的值。例如,a = a ^ b; b = a ^ b; a = a ^ b; 就可以实现a和b的值交换。
判断两个数是否相等:如果两个数进行异或运算的结果为0,则表示两个数相等。例如,a ^ b == 0 则表示a和b相等。*/
151.翻转字符串里的单词
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution {
public String reverseWords(String s) {
s = s.trim();
int j = s.length() -1, i = j;
StringBuilder res = new StringBuilder() ;
while(i>= 0){
while (i >= 0 && s.charAt(i) != ' '){
i--;
}
res.append(s.substring(i + 1, j + 1) + " ");
while (i >= 0 && s.charAt(i) == ' '){
i--;
}
j = i;
}
return res.toString().trim();
}
}