核心思想:位置交换
1.列表字符串互转倒序输出
- 时间复杂度 遍历1次数组
- 空间复杂度 2个list,1个字符串
//字符串转列表
List<String> list = Arrays.asList(str.split(""));
List<String> newStr = new ArrayList<>();
int length = list.size();
//倒序输出
for(int i=length-1;i>=0;i--){
newStr.add(list.get(i));
}
//列表转字符串
String join = String.join("",newStr);
return join;
2.对称交换
- 时间复杂度 遍历1次数组
- 空间复杂度 1个数据,1个常量空间
char[] chars = str.toCharArray();
int length = chars.length;
for(int i=0;i<length/2;i++){
//临时变量保存首值,尾值赋给首,临时变量即首值赋给尾
char t = chars[i];
chars[i]=chars[length-1-i];
chars[length-1-i]=t;
}
return new String(chars);
3.库函数
- 时间复杂度 遍历1次数组
- 空间复杂度 1个数组,1个字符串
return new StringBuilder(str).reverse().toString();
4. String的toCharArray 方法先将字符串转化为 char 类型数组,倒序拼接
- 时间复杂度 遍历1次数组
- 空间复杂度 1个数组,1个字符串
char[] chars = str.toCharArray();
int length = chars.length;
String newStr = "";
for(int i=0;i<length;i++){
newStr+=chars[length-1-i];
}
return newStr;
5.String的CharAt()方法直接倒序拼接
int length = str.length();
String newStr = "";
for(int i=0;i<length;i++){
newStr+=str.charAt(length-1-i);
}
return newStr;