557. 反转字符串中的单词 III

转载自Leet Code

题目描述

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例: >输入:"Let's take LeetCode contest" >输出:"s'teL ekat edoCteeL tsetnoc"

提示: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。


我的代码

\(T(N) = O(N)\), \(S(N) = O(N)\)

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class MySolution557 
{
public String reverseWords(String s)
{
s = s.trim();
if (s==null||s.length()<=0) return "";

char []str = s.toCharArray();

int i=0, start = 0;
for (; i<s.length(); i++)
{
if (s.charAt(i)==' ')
{
for (int ii=i-1; start<ii; start++,ii--)
{
char tmp = str[ii]; str[ii]=str[start]; str[start] = tmp;
}
start = i + 1;
}
}
if (i==s.length())
{
for (int ii=i-1; start<ii; start++,ii--)
{
char tmp = str[ii]; str[ii]=str[start]; str[start] = tmp;
}
}
return new String(str);
}
}