算法分析-如何實現字符串的反轉

問題:將一個句子中的單詞進行反轉,例如:“how are you”,進行反轉後的結果爲“you are how”。
解題思路:將這個句子進行兩次反轉操作即可。

1)對整個字符串進行字符反轉,反轉結果“uoy era woh”;
2)接下來對每個單詞進行字符反轉,結果就是“you are how”。

源代碼:

/*
 問題:將一個句子中的單詞進行反轉,例如:“how are you”,進行反轉後的結果爲“you are how”。
 解題思路:將這個句子進行兩次反轉操作即可。
 1)對整個字符串進行字符反轉,反轉結果“uoy era woh”;
 2)接下來對每個單詞進行字符反轉,結果就是“you are how”。
*/
public class SwapString{
    public  void swap(char []cArr , int front , int end){
        while(front<end){
            char tmp = cArr[end];
            cArr[end] = cArr[front];
            cArr[front] = tmp;
            front++;
            end--;
        }
    }

    public String swapWrods(String s){
        char []cArr = s.toCharArray();
        //對整個字符串進行字符反轉操作
        swap(cArr,0,cArr.length - 1);
        int begin = 0 ;
        //對每個單詞進行字符反轉操作
        for(int i = 1; i<cArr.length;i++){
            if(cArr[i] ==' '){
                swap(cArr,begin,i-1);
                begin = i+1;
            }
        }
        //處理最後一個單詞
        swap(cArr, begin, cArr.length-1);
        return new String(cArr);
    }
    public static void main(String []args){
        String str = "how are you";
        System.out.println(new SwapString().swapWrods(str));
    }
}
發佈了83 篇原創文章 · 獲贊 13 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章