核心思想:位置交换

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()方法直接倒序拼接

  • 时间复杂度 遍历1次数组
  • 空间复杂度 1个字符串
		int length = str.length();
        String newStr = "";
        for(int i=0;i<length;i++){
            newStr+=str.charAt(length-1-i);
        }
        return newStr;