LeetCode 557. Reverse Words in a String III

原题链接在这里:https://leetcode.com/problems/reverse-words-in-a-string-iii/#/description

题目:

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.

题解:

遇到空格就把之前标记的部分reverse. 

Note: 最后一次reverse别忘了.

Time Complexity: O(n), n = s.length().

Space: O(n), char array.

AC Java:

 1 class Solution {
 2     public String reverseWords(String s) {
 3         if(s == null || s.length() == 0){
 4             return s;
 5         }
 6         
 7         int len = s.length();
 8         char [] charArr = s.toCharArray();
 9         
10         int lo = 0;
11         for(int i = 0; i<=len; i++){
12             if(i==len || charArr[i]==' '){
13                 reverse(charArr, lo, i-1);
14                 lo = i+1;
15             }
16         }
17         
18         return new String(charArr);
19     }
20     
21     private void reverse(char [] s, int i, int j){
22         while(i < j){
23             swap(s, i++, j--);
24         }
25     }
26     
27     private void swap(char [] s, int i, int j){
28         char temp = s[i];
29         s[i] = s[j];
30         s[j] = temp;
31     }
32 }

类似Reverse String II

posted @ 2017-06-15 08:47  Dylan_Java_NYC  阅读(366)  评论(0编辑  收藏  举报