算法——翻转字符串II

描述
给定输入的字符数组,逐词翻转数组。单词被定义为不包含空格的字符串.
输入字符数组不包含前导或尾部空格,单词总是用单个空格分隔。
样例
给定 s = "the sky is blue",
翻转之后 : "blue is sky the"
挑战
你能在不分配额外空间的情况下原地解决这个问题吗?

实现:

public class Solution {
    /**
     * @param str: a string
     * @return: return a string
     */
    public char[] reverseWords(char[] str) {
        // write your code here  
        int j = str.length - 1;
        char[] newChar = reverse(str, 0, j);
        for (int i = 0; i < j; i++) {
            int start = i;
            while (i <= j && newChar[i] != 32) {
                i++;
            }
            if (i - start > 0) {
                newChar = reverse(newChar, start, i - 1);
            }
            if (i - 1 != j) {
                newChar[i] = 32;
            }
        }
        return newChar;     
    }
     public  char[] reverse(char[] str, int left, int right) {
        int length = right - left;
        char temp;
        while (left <= right) {
            temp = str[left];
            str[left] = str[right];
            str[right] = temp;
            left++;
            right--;
        }
        return str;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容