题目地址:
https://www.lintcode.com/problem/reverse-words-in-a-string-iii/description
给定一个字符串 s s s,其包含单词以及空格(以空格分开的都看作单词)。要求将每个单词翻转,但要保持单词之间原来的顺序。
代码如下:
public class Solution {
/**
* @param s: a string
* @return: reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order
*/
public String reverseWords(String s) {
// Write your code here
char[] str = s.toCharArray();
for (int i = 0, j = 0; i <= str.length; i++) {
// 最后一部分别忘了翻转
if (i == str.length || str[i] == ' ') {
reverse(str, j, i - 1);
j = i + 1;
}
}
return new String(str);
}
private void reverse(char[] s, int i, int j) {
for (; i < j; i++, j--) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
时间复杂度 O ( l s ) O(l_s) O(ls),空间 O ( 1 ) O(1) O(1)。