Leetcode - Reverse Words in a String II

Screenshot from 2016-02-29 10:41:32.png

My code:

public class Solution {
    public void reverseWords(char[] s) {
        if (s == null || s.length == 0)
            return;
        int begin = s.length - 1;
        int end = s.length - 1;
        while (end >= 0) {
            char curr = s[end];
            if (begin == end) {
                if (curr == ' ') {
                    end--;
                    begin--;
                }
                else {
                    end--;
                }
            }
            else {
                if (curr == ' ') {
                    reverse(s, end + 1, begin);
                    end--;
                    begin = end;
                }
                else {
                    end--;
                }
            }
        }
        if (begin >= 0) {
            reverse(s, 0, begin);
        }
        reverse(s, 0, s.length - 1);
    }
    
    private void reverse(char[] s, int begin, int end) {
        if (s == null || s.length == 0 || begin > end)
            return;
        while (begin < end) {
            char temp = s[begin];
            s[begin] = s[end];
            s[end] = temp;
            end--;
            begin++;
        }
        return;
    }
}

之前做過類似的題目,但是用了額外空間。

希望這周有好運。

Anyway, Good luck, Richardo!

My code:

public class Solution {
    public void reverseWords(char[] s) {
        if (s == null || s.length == 0) {
            return;
        }
        
        reverse(s, 0, s.length - 1);
        int begin = 0;
        for (int i = 0; i < s.length; i++) {
            if (s[i] == ' ') {
                reverse(s, begin, i - 1);
                begin = i + 1;
            }
        }
        reverse(s, begin, s.length - 1);
    }
    
    private void reverse(char[] s, int begin, int end) {
        int i = begin;
        int j = end;
        while (i < j) {
            char temp = s[i];
            s[i] = s[j];
            s[j] = temp;
            i++;
            j--;
        }
    }
}

不知道為什么之前代碼寫的那么復雜,是做 rotate array 轉而過來做這道題目的。

還有,一些私有方法, private,其實不需要有太多的input check.
public method should check if input is valid or not

Anyway, Good luck, Richardo! -- 09/12/2016

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容