牛客网——字符串逆序

牛客-字符串倒置

题目链接

链接: link

这个是倒置字符串题目的链接,有兴趣做的小伙伴可以点击前往

解题思路

  • 思维方式:

下面我们将逐步进行对问题的分析:

1.我们可以先自定义一个逆序函数reverse;

2.我们可以先将每个单词进行逆序;

这里请注意输入函数scanf如果不加以说明是不会接受空格的,也就是说当输入一个字符串的时候如果输入空格,scanf会在空格处截止对字符串的输入

2.在完成对每个单词的逆序后,我们再将整个字符串进行逆序;

指针解法

#include<stdio.h>
#include<string.h>
void reverse(char*start,char*end)//这个是我们的逆序函数
{
    //下面的代码就是我们逆序函数的实现过程
    while(start<end)
    {
        char tmp = *start;
        *start = *end;
        *end = tmp;
        start++;
        end--;
    }
}

int main()
{
    char str[101]={0};//这里我们创建一个字符型数组
    gets(str);//运用字符串输入函数gets
    char*cur = str;//这里我们创建一个指针变量来观察我们的每个单词
    while(*cur)//*cur的意思是当*cur为'\0'时跳出循环
    {
        char*start = cur;//规定一个单词的起始指针变量
        char*end = cur;//规定一个单词的终止变量
        while((*end!=' ')&&(*end!='\0'))
        {
            end++;//end的指针读取的不是空格时,指针+1,这样就可以完成对单词的读取
        }//这个循环出来的时候,end要不就是指向空格,要不就是指向\0
        
        reverse(start,end-1);//对一个单词进行逆序
        if(*end != '\0')
            cur = end + 1;//这个是为了对单词逆序的终止,同样也是进行对下一个单词的读取
        else
            cur = end;
    }
    //对整个字符串进行逆序
    int len = strlen(str);
    reverse(str,str+len-1);
    
    printf("%s\n",str);
    
    return 0;   
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值