原题链接在这里: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

相关文章:

  • 2022-12-23
  • 2022-01-26
  • 2022-02-14
  • 2022-01-03
  • 2021-08-21
  • 2021-12-04
  • 2022-02-11
猜你喜欢
  • 2021-07-29
  • 2022-02-04
  • 2022-02-24
  • 2022-12-23
  • 2022-01-27
  • 2021-05-28
相关资源
相似解决方案