您的位置:首页 > 职场人生

面试题42:旋转字符串

2017-04-10 19:43 295 查看
#include<iostream>
#include<string.h>

using namespace std;

void reverse(char *begin, char *end){
if(begin == NULL || end == NULL){
return;
}
while(begin < end){
char tmp = *begin;
*begin = *end;
*end = tmp;
++begin;
--end;
}
}

void reverse_sentence(char *begin){
if(begin == NULL){
return;
}

//找到结尾
char* end = begin;
while(*end != '\0'){
++end;
}
--end;
//旋转整个字符串
reverse(begin, end);

//查找空格并旋转单个单词
end = begin;
while(*begin != '\0'){
if(*begin == ' '){
++begin;
end = begin;
}else if (*end == ' ' || *end == '\0'){
reverse(begin, --end);
begin = ++end;
}else{
++end;
}
}
}

int main(){
char *s = new char[100];
cin.getline(s, 100);
reverse_sentence(s);
cout << s << endl;
delete []s;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: