輸入:「I love china」 → 輸出:「china love I」 (單詞順序反轉,單詞內部字元順序不變)。
public class StringReverse {
public static void swap(char[] arr, int begin, int end) {
while (begin < end) {
char temp = arr[begin];
arr[begin] = arr[end];
arr[end] = temp;
begin++; end--;
}
}
public static String reverseWords(String st) {
char[] arr = st.toCharArray();
swap(arr, 0, arr.length - 1); // 整體反轉
int begin = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] == ' ') {
swap(arr, begin, i - 1); // 單詞反轉
begin = i + 1;
}
}
swap(arr, begin, arr.length - 1); // 最後一個單詞
return new String(arr);
}
public static void main(String[] args) {
System.out.println(reverseWords("I love you !")); // ! you love I
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // 讀取整行
String[] sArr = str.split(" ");
List<String> list = Arrays.asList(sArr);
Collections.reverse(list);
for (String word : list) {
System.out.print(word + " ");
}
}
| 維度 | 手動反轉 | JDK 工具 |
|---|---|---|
| 空間複雜度 | O(1) (原地) | O(n) (建立陣列、List) |
| 程式碼複雜度 | 較高 | 極低 |
| 適用場景 | 面試、嵌入式、大資料 | 一般業務開發 |