c语言实现倒置字符串

倒置字符串_牛客题霸_牛客网

这是牛客网的原题,大家可以先做一下

这道题与单纯的字符逆序不同,我们看这道题的输入和输出。

 此题是将一句话的每个单独的单词分开,注意最后的一个单词的句号是不逆序的。

 所以我们做这道题的思路就是先将一句话每个单词逆序,之后再一个一个单词的逆序,这样就实现了让每个单词逆序。

 那我们先写一个逆序函数

void reverse(char*left,char*right)
{
    assert(left&&right);
    while(left<right)
    {
        char tmp=*left;
        *left=*right;
        *right=tmp;
        left++;
        right--;
    }
    




int main()
{
    char arr[100]={0};
    gets(arr);
    int len=strlen(arr);
    reverse(arr,arr+len-1);
}

这里我就不介绍实现这个函数了,可以看我往期的博客实现字符数组倒序打印(C语言)_GO1ING的博客-CSDN博客_c语言将字符数组逆序输出

再逆序之后我们就需要逆序每个单词,我们先看如何实现的 

#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char*left,char*right)
{
    assert(left&&right);
    while(left<right)
    {
        char tmp=*left;
        *left=*right;
        *right=tmp;
        left++;
        right--;
    }
    
}
int main()
{
    char arr[100]={0};
    gets(arr);
    int len=strlen(arr);
    reverse(arr,arr+len-1);
    char*cur=arr;
    
    while(*cur)
    {
        char*start=cur;
        while(*cur!=' '&&*cur!='\0')
        {
            cur++;
        }
        reverse(start,cur-1);
        if(*cur!='\0')
        cur++;
    }
    printf("%s\n",arr);


    return 0;
}

先设置一个指针,让指针指向的内容只要不是空格和结束标志我们,就让这个指针往下走,直到指向空格位置就停下,那我就先设置一个开始指针start,这样我们就再传参进入这个函数即可。

这样这个功能就实现了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值