代码一:
1、将字符串中的所有单词翻转,例如:src中的字符串为“I am from Beijing”,翻转后为 "I ma morf gnijieB"
代码二:
1 先进行全局翻转 例如:“I am from Beijing” -> " gniieB morf ma I"
2 再将各个单词进行翻转 “Beijing from am I”
1、将字符串中的所有单词翻转,例如:src中的字符串为“I am from Beijing”,翻转后为 "I ma morf gnijieB"
2、再进行全局翻转"Beijing from am I"
#include <iostream>
using namespace std;
void RevStr( char *src)
{
if (src==NULL)
return ;
//1 将str中的各个单词进行翻转
char *start;//单词的开头
char *end;//单词的末尾
char *ptr;//用于遍历整个字符串
start=end=ptr=src;
while(*ptr++!='\0')//遍历字符创
{
if(*ptr==' '||*ptr=='\0')//找到一个单词
{
end=ptr-1;//end指向单词末尾
while(start<end)
swap(*start++,*end--);//把单词的字母逆置
start=end=ptr+1;//指向下一个单词开头
}
}
//2 进行全局翻转
start=src;//start指向字符串开头
end=ptr-2;//end指向字符串末尾
while(start<end)
{
swap(*start++,*end--);//把整个字符串逆置
}
}
代码二:
1 先进行全局翻转 例如:“I am from Beijing” -> " gniieB morf ma I"
2 再将各个单词进行翻转 “Beijing from am I”
void RevStr(char *src)
{
if (src==NULL)
return ;
char *start=src;
char *end=src;
char *ptr=src;
//进行全局翻转
while(*ptr++!='\0');
end=ptr-2;//end指向字符串的末尾
while(start<end)
{
swap(*start++,*end--);
}
//2 局部每个单词进行翻转
start=src;
end=ptr-2;
ptr=start;
while(*ptr++!='\0')
{
if(*ptr==' '||*ptr=='\0')
{
end=ptr-1;
while(start<end)
{
swap(*start++,*end--);
}
start=end=ptr+1;
}
}
}
int main()
{
char src[]="I am from Beijing";
cout<<"src: "<<src<<endl;
RevStr(src);
cout<<"des: "<<src<<endl;
return 0;
}