字符串逆序,字符串翻转


给定一个字符串,按单词将该字符串逆序,
比如给定"I LOVE YOU",则输出是"YOU LOVE I",为了简化问题,字符串中不包含标点符号。

分两步

1 先按单词逆序得到"I EVOL UOY"

2 再整个句子逆序得到"YOU LOVE I"
#include <iostream>
#include <cstring>
using namespace std;
//将p->q之间包含的单词 逆序
void ReverseWord(char*p, char* q)
{
    while(p< q)
    {
        char temp =*p;
        *p++ = *q;
        *q-- = temp;
    }
}
void ReverseTotal(char* src)
{
	// 这两个指针用来确定一个单词的首尾边界
    char* p=src;//指向单词的首字符
    char* q=src;// 指向空格或者 ''
    while(*q !='')
    {
        if(*q==' ')
        {
            ReverseWord(p, q-1);
            q++;// 指向下一个单词首字符
            p=q;
        }
        else
        {
            q++;
        }
    }
    ReverseWord(p,q-1); // 对最后一个单词逆序
    ReverseWord(src,q-1);// 对整个句子逆序
}
int main()
{
    char src[]={"I LOVE YOU"};
    ReverseTotal(src);
    cout<<src<<endl;
    return 0;
}

字符串逆序

关注公众号 海量干货等你
原文地址:https://www.cnblogs.com/sowhat1412/p/12734478.html