反转句子中的单词 算法

来源:互联网 发布:minitab软件下载 编辑:程序博客网 时间:2024/05/01 15:46

腾讯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;}


0 0