LeetCode-557. Reverse Words in a String III

来源:互联网 发布:飞行员是什么意思网络 编辑:程序博客网 时间:2024/06/15 11:52

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------我的方法,耗时22ms:

public class Solution {    public String reverseWords(String s) {        String[] array = s.split(" ");StringBuilder sb = new StringBuilder();char [] splitArray  = null;for(int i=0; i < array.length;i++){splitArray = array[i].toCharArray();int iLength = splitArray.length;int start = 0;int end = iLength;char temp;while(start < end){temp=splitArray[start];   splitArray[start]=splitArray[end-1];   splitArray[end-1]=temp;   start++;  end--;}if(sb.length() == 0){    sb.append(new String(splitArray));}else{    sb.append(" "+new String(splitArray));}}return sb.toString();    }}


另一种方法,耗时6ms:

public class Solution {    public String reverseWords(String s) {        char[] chars = s.toCharArray();        int i=0;        while(i<chars.length){            int wordEnd = getWordEnd(chars, i);            reverse(chars, i, wordEnd);            i = wordEnd+1;        }        return new String(chars);    }        public int getWordEnd(char[] chars, int i){        while(i < chars.length && chars[i]!=' '){            i++;        }        return i;    }        public void reverse(char[] chars, int from, int to){        //System.out.println("reverse "+Arrays.toString(chars)+" "+ from + " "+to);        for(int i=from; i<from + (to-from)/2;i++){            swap(chars, i, to - (i-from) - 1);        }    }        public void swap(char[] arr, int i, int j){        char tmp = arr[i];        arr[i] = arr[j];        arr[j] = tmp;    }}




阅读全文
0 0
原创粉丝点击