例题:将“i am from shanghai”=>"shanghai from am i".
思想:翻转分为两部,第一部将整个字符串全部翻转变成“iahgnahs ....”,然后依据空格,再将每个单词翻转变成“shanghai ...”.这两个步骤可以调换,即先单词翻转,在整个字符串翻转。另外C++有reverse函数。
void reverse(char* str) { assert(*str); //第一步整个翻转 char* end=str,*start=str; //找到字符串结尾 while (*end) { end++; } end--; while(start<end) { swap(*start,*end); start++; end--; } cout<<str<<endl; //第二步单个再翻转 end=str,start=str; while (1) { if(*end==' '||*end=='\0'){ char *s=start;char *e=end-1; start=end+1; while(s<e) { swap(*s,*e); s++;e--; } } if(*end!='\0'){ end++; }else{ break; } } } int main(void) { char a[]="abcdef 0123 qwe"; reverse(a); cout<<a; return 0; }