反转字符串

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

思路1:倒序填入

开辟一个新数组,倒序填入字符

public class Solution {
    public String solve (String str) {
        int length = str.length();
        char[] arr = new char[str.length()];
        for(int i = 0; i < length; i++) {
            arr[i] = str.charAt(length - 1 - i);
        }
        return String.valueOf(arr);
    }
}

思路2:原地交换

  1. 第一个字符和最后一个字符交换
  2. 第二个字符和倒数第二个字符交换

写法1:使用for循环

public class Solution {
    public String solve (String str) {
        char[] arr = str.toCharArray();
        int length = str.length();
        for(int i = 0; i < length / 2; i++) {
            int target = length - 1 - i;
            char c = arr[i];
            arr[i] = arr[target];
            arr[target] = c;
        }
        return String.valueOf(arr);
    }
}

写法2:使用while+双指针

public class Solution {
    public String solve (String str) {
        char[] arr = str.toCharArray();
        int i = 0;
        int j = str.length() - 1;
        while(i < j) {
            char c = arr[i];
            arr[i] = arr[j];
            arr[j] = c;
            i++;
            j--;
        }
        return String.valueOf(arr);
    }
}

思路3:调用库函数

public class Solution {
    public String solve (String str) {
        StringBuilder sb = new StringBuilder(str);
        return sb.reverse().toString();
    }
}