字符串中单词的逆转
题目:字符串中单词的逆转,即将单词出现的顺序进行逆转。如将“Today is Friday!"逆转为"Firday! is Today”。
思路:如果想要不使用额外的空间,可以分为两步,首先将字符串全部逆转,然后通过空格分隔单词,使单词自身再次逆转。
#include <iostream>
#include <stdlib.h>
using namespace std;
char * reverse ( char * begin, char * end)
{
if ( begin == NULL || end == NULL ) return NULL ;
while ( begin < end) {
char temp = * begin;
* begin = * end;
* end = temp;
begin++ ;
end-- ;
}
}
void reverseSentence ( char * str)
{
if ( str != NULL ) {
char * begin = str;
char * end = str + strlen ( str) - 1 ;
reverse ( begin, end) ;
begin = str;
end = str;
while ( * begin != '\0' ) {
if ( * end == '\0' || * end == ' ' ) {
end-- ;
reverse ( begin, end) ;
end++ ;
begin = end;
}
if ( * begin == ' ' ) {
end++ ;
begin++ ;
}
else {
end++ ;
}
}
}
}
void main ( )
{
char str[ 1000 ] = { 0 } ;
while ( gets_s ( str) )
{
reverseSentence ( str) ;
printf ( "%s\n" , str) ;
}
}