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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容