Problem
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.
Solution (Java)
class Solution {
public String reverseWords(String s) {
int l;
int r = 0;
int len = s.length();
char[] ch = s.toCharArray();
for (int i = 0; i <= len; i++) {
if (i == len || ch[i] == ' ') {
l = r;
r = i;
reverse(ch, l, r - 1);
r++;
}
}
return new String(ch);
}
private void reverse(char[] s, int l, int r) {
char c;
while (r > l) {
c = s[l];
s[l++] = s[r];
s[r--] = c;
}
}
}
Solution (Javascript)
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.split(' ').map(reverse).join(' ');
};
var reverse = function (word) {
var len = word.length;
var res = '';
for (var i = 0; i < len; i++) {
res += word[len - i - 1];
}
return res;
};
Explain:
nope.
Complexity:
- Time complexity :
- Space complexity :