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)
本文详细介绍了两种用于翻转字符串的算法:拼接法和双指针法。拼接法通过迭代字符并反转拼接到新字符串中实现,而双指针法则利用两个指向字符串两端的指针进行元素交换,直至它们相遇。前者时间复杂度为O(n),后者时间复杂度为logn,两者均展示了不同的空间复杂度。
627

被折叠的 条评论
为什么被折叠?



