C++字符串翻转操作

来源:互联网 发布:js数组remove和push 编辑:程序博客网 时间:2024/06/05 10:42

举例:

I love cpp

翻转后

cpp love I

算法: 先翻转整个句子,再翻转每个单词

 

#include <stdio.h>#include <string.h>void reverseInPlace( char *input, int start, int end ){    char *s = input + start;    char *e = input + end;    while ( s < e )    {        char tmp = *s;        *s = *e;        *e = tmp;        s++;        e--;    }}
void reverseSentence ( char sentence[] ){    reverseInPlace(sentence,0,strlen(sentence)-1);  //翻转整个句子    int len = strlen(sentence);    int start = 0;    int end = 0;    bool lastIsChar = false;    char *tmp = sentence;    while ( '\0' != *tmp )    {        if ( *tmp != ' ' )        {            if ( lastIsChar == false )            {                lastIsChar = true;                start = tmp - sentence;            }        }        else if ( ' ' == *tmp )        {            if ( lastIsChar == true )            {                lastIsChar = false;                end = tmp -sentence-1;                reverseInPlace(sentence,start,end);            }        }        tmp ++;    }    if ( lastIsChar == true )    {        reverseInPlace(sentence,start,tmp-sentence-1);    }}
int main(int argc,char *argv[]){    char sentence1[] = "I love csdn ";    reverseSentence(sentence1);    fprintf(stderr,"%s",sentence1);    fprintf(stderr,"\n");    char sentence2[] = "  but csdn don't love me";    reverseSentence(sentence2);    fprintf(stderr,"%s",sentence2);    return 0;}
 

	
				
		
原创粉丝点击