557. 反转字符串中的单词 III

180 阅读1分钟

题目

image.png

代码

class Solution {
    public String reverseWords(String s) {
        StringBuffer sb = new StringBuffer(s);
        int start = 0;// 局部反转的起点
        // 局部反转
        for (int i = 0; i <= sb.length(); i++) {
            if (i == sb.length()) {// 末尾单词
                reverse(sb, start, i - 1);
            } else if (sb.charAt(i) == ' ') {// 反转到空格前一位
                reverse(sb, start, i - 1);
                start = i + 1;
            }
        }
        return sb.toString();
    }

    //翻转从start到end的字符串
    public void reverse(StringBuffer sb, int start, int end) {
        int i = start, j = end;
        while (i < j) {
            char tmp = sb.charAt(i);
            sb.setCharAt(i, sb.charAt(j));
            sb.setCharAt(j, tmp);
            i++;
            j--;
        }
    }
}