当前位置: 首页 > news >正文

「题解」字符串中的所有单词进行倒排

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

题目要求

1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;

事例

输入:I love you bit          输入:I @@like%*cpp21
输出:bit you love I          输出:cpp like I

🏡解题思路

首先定义一个字符指针数组,用于保存每个单词的起始字符地址,接下来将非字母符全部替换成为字符串结尾的标志,则单词字符字母遇到结尾就结束了,相当于把一个字符串以非字母字符进行切割成为了多少字符串,最终对字符指针数组进行逆序输出每个单词即可

🏡源码分享

#include<stdio.h>
#include<string.h>
int main()
{
    char str[100001]={0};
    int row=0;
    while(gets(str)>0)
    {
        char* ptr=str;
        char* word[10000]={NULL};
        while(*ptr!='\0')
              {
                  if(('z'>=*ptr&&*ptr>='a')||('Z'>=*ptr&&*ptr>='A'))
                      {
                          word[row++]=ptr;
                          while(*ptr!='\0'&&(('z'>=*ptr&&*ptr>='a')||('Z'>=*ptr&&*ptr>='A')))
                          {
                              ptr++;
                          }
                          continue;
                      }
                  *ptr='\0';
                  ptr++;
        }
        for(int i=row-1;i>=0;i--)
        {
            printf("%s ",word[i]);
        }
        printf("\n");
    }
    return 0;
}


​
​

🏡代码分析 

🤔可以多次输入字符串进行调试

while(gets(str)>0)

创建指针数组(注意是指针数组而不是数组指针),去存放每个单词的首地址。有些伙伴会问为什么要用指针数组呢?为啥不直接创建指针去存放地址呢?首先,我不知道创建多少个指针才合适,其次,创建这么多指针,怎么去给他们赋值,怎么去命名。这些都是一些不可忽视问题,但是指针数组可以有效去解决这些问题。

char* word[10000]={NULL};

🤔如果是字母字符,则是单词的起始字符

if(('z'>=*ptr&&*ptr>='a')||('Z'>=*ptr&&*ptr>='A'))

🤔保存每个单词的起始地址

word[row++]=ptr;

🤔把本次的单词字母字符走完,直到遇到非字符字母

while(*ptr!='\0'&&(('z'>=*ptr&&*ptr>='a')||('Z'>=*ptr&&*ptr>='A')))

🤔不能继续向下,因为下边的ptr++会跳过当前非字母字符

continue;

🤔把非字母字符替换为字符串的结尾标志

*ptr='\0';

🤔针对所有单词的起始地址逆序输出

printf("%s",word[i]);

🌸🌸🌸希望通过这道题可以帮助大家提升学习编程的能力,以后遇到这种就可所向披里如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸

相关文章:

  • 关于符合车规的高精度定位产品
  • 【Linux】基础网络编程
  • torch_geometric--Convolutional Layers
  • Java——OpenJDK和JDK的区别
  • Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab
  • 下一代编解码技术Ali266在视频超高清领域的应用展望
  • 【K8S之调度器流程和扩展】如何给 scheduler 添加扩展插件、关闭默认插件、创建多个 scheduler?
  • kob配置git环境与项目创建
  • moment.js根据时间戳计算与当前时间相差多少天
  • VS2017编译gsf/surf/mbio —E0020 未定义标识符 “F_OK“
  • 【完美解决】Github action报错remote: Write access to repository not granted.
  • vulnhub之PRIME (2021): 2
  • 【C++修炼之路】C++入门(下)
  • 【Android Studio】【Flutter】Android Studio下Flutter环境搭建记录
  • Vue3 中使用组合式API替换mixins,达到代码复用并解决隐患
  • 规则引擎-drools-3.3-drl文件构成-rule部分-条件Condition
  • 企业怎么能上百度百科词条,创建百科方法
  • 3-1多线程-线程池
  • Linux-远程管理命令
  • mysql:数据库调优策略,sql调优
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉