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

难度简单274
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
提示:

  • 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
  1. public String reverseWords(String s) {
  2. StringBuffer ret = new StringBuffer();
  3. int length = s.length();
  4. int i = 0;
  5. while (i < length) {
  6. int start = i;
  7. while (i < length && s.charAt(i) != ' ') {
  8. i++;
  9. }
  10. for (int p = start; p < i; p++) {
  11. ret.append(s.charAt(start + i - 1 - p));
  12. }
  13. while (i < length && s.charAt(i) == ' ') {
  14. i++;
  15. ret.append(' ');
  16. }
  17. }
  18. return ret.toString();
  19. }
  20. 作者:LeetCode-Solution
  21. 链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/solution/fan-zhuan-zi-fu-chuan-zhong-de-dan-ci-iii-by-lee-2/
  22. 来源:力扣(LeetCode
  23. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
557. 反转字符串中的单词 III
Let’s take LeetCode contest i start p ret start + i - 1 - p
0->5 0 0—>4 s’teL
6—>10 6 6—>8 s’teL 6+10-1-6=9
6+10-1-7=8
6+10-1-8=7
s’teL ekat 6+10-1-9=6