翻转字符串

题目

输入:i am a student.
输出:student. a am i

题目分析

先总体反转,然后逐个单词反转,首先,将字符串完全翻转一次,得到.tneduts a ma i。然后设置两个指针,对单词进行翻转,也就是局部翻转.

代码如下:

void AllReverse(char *pStart, char *pEnd)//全反转
{
    char pTemp;
    if (pStart == NULL || pEnd == NULL)
        return;

    while (pStart < pEnd)
    {
        pTemp = *pStart;
        *pStart = *pEnd;
        *pEnd = pTemp;

        pStart++;
        pEnd--;
    }
}

char *Reverse(char *pData)//单词反转
{
    if (pData == NULL)
    {
    return NULL;
    }

    char *pStart = pData;
    char *pEnd = pData;

    while (*pEnd != '\0')
    {
        pEnd++;
    }
    pEnd--;

    AllReverse(pStart, pEnd);

    pStart = pEnd = pData;
    while (*pStart != '\0')
    {
        if (*pStart == ' ')
        {
            pStart++;
            pEnd++;
        }
        else if (*pEnd == ' ' || *pEnd == '\0')
        {
            AllReverse(pStart, --pEnd);
            pStart = ++pEnd;

        }

        else
        {
            pEnd++;
        }

    }
    return pData;
}
int main()//主函数
{
    char a_arr[100];
    char * str = NULL;
    gets_s(a_arr);
    str = Reverse(a_arr);
    cout << str;
    return 0;
}

结果

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值