反转字符串中的单词III
题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"
**注意:**在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
解题思路
个人AC
class Solution {
public String reverseWords(String s) {
char[] chs = s.toCharArray();
int l = 0, r = 0;
for (; r < chs.length; r++) {
if (chs[r] == ' ') {
reverseWord(chs, l, r - 1);
l = r + 1;
}
}
reverseWord(chs, l, r - 1);
return new String(chs);
}
public void reverseWord(char[] s, int l, int r) {
while (l < r) {
swap(s, l++, r--);
}
}
private void swap(char[] s, int i, int j) {
s[i] ^= s[j];
s[j] ^= s[i];
s[i] ^= s[j];
}
}
时间复杂度: O ( n ) O(n) O(n);
空间复杂度: O ( n ) O(n) O(n)。
最优解
同上。