腾讯2016实习生笔试的编程题,完成一个句子中单词的反转。
比如“I Come From China.” -----> "China. From Come I"
思路:将整个字符串进行一次反转,再对每个单词进行逐个反转
#include <iostream>
using namespace std;
void reStr(char arr[], int low, int high)
{
int len = high - low;
int t = (len % 2) ? (len / 2 + 1) : len / 2;
for (int i = 0;i < t;++i)
arr[low + i] ^= arr[high - i] ^= arr[low + i] ^= arr[high - i];
}
int main()
{
char arr[] = "I Come From China.";
int len = strlen(arr);
int low = 0, needRe = 0;
reStr(arr, 0, len - 1);
for (int i = 0;i < len;++i)
{
if (' ' != arr[i])
{
needRe = 1;
}
else
{
if(needRe)
reStr(arr, low, i - 1);
low = i + 1;
needRe = 0;
}
if(i == len - 1 && needRe)
reStr(arr, low, i);
}
cout << arr << endl;
return 0;
}