LeetCode 557. 反轉字符串中的單詞 III

題目描述

給定一個字符串,你需要反轉字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。

示例 1:

輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc" 

注意:在字符串中,每個單詞由單個空格分隔,並且字符串中不會有任何額外的空格。

思路

由於字符串中不會有任何額外的空格,根據空格來找單詞,將每個單詞依次進行字符串的反轉即可,字符串的反轉可以看我這篇博客:LeetCode反轉字符串

AC代碼(Java)

class Solution {
    public String reverseWords(String s) {
        char[] cl = s.toCharArray();
        int start = 0;
        int nextSpace = s.indexOf(' ',start);  // 返回字符串s從索引start開始的第一個空格的索引,若沒有,則返回-1
        while(nextSpace != -1) {
            reverse(cl,start,nextSpace - 1);
            start = nextSpace + 1;
            nextSpace = s.indexOf(' ',start);
        }
        reverse(cl,start,cl.length - 1);
        return new String(cl);
    }
    
    public void reverse(char[] cl,int start,int end){
        while(start < end){
            char temp = cl[start];
            cl[start] = cl[end];
            cl[end] = temp;
            start ++;
            end --;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章