首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 字串單詞反轉實作:兩種方法完整代碼範例

     編輯:Java 相關知識

問題描述

輸入:「I love china」 → 輸出:「china love I」 (單詞順序反轉,單詞內部字元順序不變)。

方法一:手動雙重反轉 (空間 O(1),原地操作)

  1. 先將整個字元陣列完全反轉 → 「anihc evol I」
  2. 再依空格分隔,將每個單詞單獨反轉 → 「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
    }
}

方法二:利用 JDK 集合工具 (程式碼簡潔)

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)
程式碼複雜度較高極低
適用場景面試、嵌入式、大資料一般業務開發
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved