1.题目
翻转字符串,“ABC”, “CBA”
2.解法1(拼接法1)
pulic String reverse(String s) {
int len = s.length();
String r = "";
for (int i = 0; i < len; i++) {
r = s.charAt(i) + r;
}
return r;
}
时间复杂度是O(n), 空间复杂度是O(1)
解法2(双指针法)
public class Solution {
public String revert(String s) {
if (s == null) return null;
int i = 0, j = s.length() - 1;
char[] arr = s.toCharArray();
char tmp = arr[0];
// 字符串是不可变序列
// 双指针,相遇的话,说明到达了中间点
while(i < j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
// 循环的话,指针需要改变
++i;
--j;
}
// 数组转换为指针
return String.copyValueOf(arr);
}
public static void main(String[] args) {
Solution so = new Solution();
String s = so.revert("ABC");
System.out.print(s);
}
}
时间复杂度为logn,空间复杂度为O(n)