-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path344Solution.java
45 lines (44 loc) · 1.21 KB
/
344Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 344. Reverse String
public class 344Solution {
// 1. brutal way
public String reverseString1(String s) {
StringBuilder result = new StringBuilder("");
for (int i = s.length() - 1; i >= 0; i--) {
result.append(s.charAt(i));
}
return result.toString();
}
//2. two pointers
public String reverseString2(String s) {
char[] array = s.toCharArray();
for (int i = 0, j = s.length() - 1; i < j; i++, j--) {
// 头尾交换
swap(array, i, j);
}
StringBuilder result = new StringBuilder("");
for (char c : array) {
result.append(c);
}
return result.toString();
}
private void swap (char[] array, int i, int j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
}
// 异或运算
// a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b
public String reverseString3(String s) {
char[] a = s.toCharArray();
int i = 0;
int j = a.length - 1;
while (i < j) {
a[i] = (char) (a[i] ^ a[j]);
a[j] = (char) (a[i] ^ a[j]);
a[i] = (char) (a[i] ^ a[j]);
i++;
j--;
}
return new String(a);
}
}