#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;
}
面试题42:旋转字符串
最新推荐文章于 2025-07-08 09:59:22 发布