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

简单

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

 

示例:

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

思路:找到每个单词的前后位置,然后将它反转顺序

static String reverseWords(String s) {
        char[] c = s.toCharArray();
        int left = 0;
        int right = 0;
        while (right < c.length) {
            if (right == c.length - 1) {//如果走到最后一个元素
                reserve(c, left, right);
            }
            if (c[right] != ' ') {
                right++;
            } else {
                reserve(c, left, right - 1);
                left = right + 1;//从每一组的后面开始
                right += 2;//下一个元素
            }
        }
        return new String(c);
    }
​
    static void reserve(char[] c, int left, int right) {//双指针反转元素
        while (left < right) {
            char tmp = c[left];
            c[left++] = c[right];
            c[right--] = tmp;
        }
    }   
​
//解法二
 static String reverseWords(String s) {
        String[] split = s.split(" ");
        for (int i=0; i<split.length; i++) {
            split[i] = new StringBuffer(split[i]).reverse().toString();
        }
        return String.join(" ", split);
    }
​
posted @ 2021-09-14 23:32  naybdo  阅读(41)  评论(0)    收藏  举报