您的位置:首页 > 其它

Easy-4

2017-05-02 17:14 106 查看
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即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: