链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/

一 题目

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

示例: 输入:“Let’s take LeetCode contest”

输出:“s’teL ekat edoCteeL tsetnoc”

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

二 题解

和 0334-反转字符串类似,不过只是全局的处理变为了局部上的处理。

  1. class Solution {
  2. // s0557reverseWords
  3. public String reverseWords(String s) {
  4. if(s.length()<2){
  5. return s;
  6. }
  7. char[] array = s.toCharArray();
  8. int length = array.length;
  9. int start = 0;
  10. int end = 0;
  11. while(end<length){
  12. if(array[end] == ' '){
  13. reverse(array,start,end-1);
  14. start = end+1;
  15. }else if(end == length-1){
  16. reverse(array,start,end);
  17. }
  18. end++;
  19. }
  20. return String.valueOf(array);
  21. }
  22. private void reverse(char[] s,int start,int end){
  23. while (start < end){
  24. char temp = s[start];
  25. s[start] = s[end];
  26. s[end] = temp;
  27. start++;
  28. end--;
  29. }
  30. }
  31. }