美文网首页
算法——翻转字符串II

算法——翻转字符串II

作者: luweicheng24 | 来源:发表于2019-02-22 20:52 被阅读0次

    描述
    给定输入的字符数组,逐词翻转数组。单词被定义为不包含空格的字符串.
    输入字符数组不包含前导或尾部空格,单词总是用单个空格分隔。
    样例
    给定 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;
        }
    }
    

    相关文章

      网友评论

          本文标题:算法——翻转字符串II

          本文链接:https://www.haomeiwen.com/subject/hhsyyqtx.html