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 }