Easy-4

来源:互联网 发布:紫萱和徐长卿知乎 编辑:程序博客网 时间:2024/06/10 06:13

leetcode     557. Reverse Words in a String III          

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.


AC:

char* reverseWords(char* s) {
 int start = 0; int end = 0;
 while (s[end] != '\0')
 {
  if (s[end] != ' ')
  {
   end++;
  }
  else
  {
   //逆序[start,end-1],start=end=end+1
   int mid = (start + end - 1) / 2;
   for (int i = start; i <=mid; i++)
   {
    char buf = s[i];
    s[i] = s[end - 1 - i + start];
    s[end - 1 - i + start] = buf;
   }
   end = end + 1;
   start = end;
  }
 }
 //对于最后一个字段
 int mid = (start + end - 1) / 2;
 for (int i = start; i <= mid; i++)
 {
  char buf = s[i];
  s[i] = s[end - 1 - i + start];
  s[end - 1 - i + start] = buf;

 }
 return s;
}
tip:
在循环的else中,是先给end加1操作的,故下一句start=end即可。

0 0