牛客网 HJ31 单词倒排(详解)

news2024/11/28 1:47:57

前言:内容包括四大模块:题目,代码实现,大致思路,代码解读

 题目:

描述

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;

数据范围:字符串长度满足 1≤n≤10000 

输入描述:

输入一行,表示用来倒排的句子

输出描述:

输出句子的倒排结果

示例1

输入:

I am a student

输出:

student a am I

示例2

输入:

$bo*y gi!r#l

输出:

l r gi y bo

代码实现:

#include<stdio.h>
int main()
{
	char arr[10004] = { 0 };
	gets(arr);
	char* p = arr;
	char* str[10004] = { NULL };
	int i = 0;
	while (*p != '\0')
	{
		if ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p <= 'z'))
		{
			str[i++] = p;
			while ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p <= 'z'))
			{
				p++;
			}
		}
		*p = '\0';
		p++;
	}
	int j = 0;
	for (j = i - 1; j >= 0; j--)
	{
		printf("%s ", str[j]);
	}
}

大致思路:

1. 将字符串分割成独立的单词存入字符指针数组中

   way:字符指针数组存储每个单词的起始地址

             a. 使用一个字符指针去遍历读取的字符串,字符指针开头一定指向的是一个单词的首字母

           (注意可能一个非法单词是由多个空格组成的,即字符指针可能开头指向的是非字母字符)

将每一个单词的末尾(比如空格)改成字符串的结束标志'\0' 

2. 倒序打印存储好每个单词的字符指针数组

代码解读:

part 1

    char arr[10004] = { 0 };
	gets(arr);
	char* p = arr;
	char* str[10004] = { NULL };

使用gets可以读取带有空格的字符串,存储到arr数组中

创建一个字符指针数组str用于存放每个单词的起始地址

创建字符指针p去遍历arr数组

part 2

    int i = 0;
	while (*p != '\0')
	{
		if ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p <= 'z'))
		{
			str[i++] = p;
			while ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p <= 'z'))
			{
				p++;
			}
		}
		*p = '\0';
		p++;
	}

字符指针p开头指向的一定是一个单词的首字母(单词包括合法单词:由字母组成,非法单词:由非字母字符组成)

1.若是*p是字母,则已经来到一个单词的首字母位置,将这个单词的起始地址保存到str数组中

然后需要走到单词的末尾,分割出这个单词

分割:从一个单词的起始地址开始走,若是下一个字符是字母,则继续走,直至碰到不是字母的字符,这表示一个完整的单词已经走完了,我们需要将这个不是字母的字符改成字符串的结束标志'\0'

2. 一个单词分割结束后,p++,指向下一个单词的首字母,继续上面的操作

part 3

    int j = 0;
	for (j = i - 1; j >= 0; j--)
	{
		printf("%s ", str[j]);
	}

倒序打印str数组中的内容,由于i++是后置++,在最后一个单词存储到str数组后,i会继续向后走一步,故而我们设定数组最后一个元素的下标为i-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch学习笔记:nn.L1Loss——L1损失

PyTorch学习笔记&#xff1a;nn.L1Loss——L1损失 torch.nn.L1Loss(size_averageNone, reduceNone, reductionmean)功能&#xff1a;创建一个绝对值误差损失函数&#xff0c;即L1损失&#xff1a; l(x,y)L{l1,…,lN}T,ln∣xn−yn∣l(x,y)L\{l_1,\dots,l_N\}^T,l_n|x_n-y_n| l(…

苹果手机怎么传输照片到电脑?教你4种实用方法

苹果手机怎么传输照片到电脑&#xff1f;除了更换新手机需要迁移数据&#xff0c;iPhone用久了常常会遇到储存空间不足的问题&#xff0c;因此把一些数据上传到电脑上也是必要的。今天咱们就来说说从iPhone传输照片到电脑的迁移方法吧。 方法1.使用苹果数据线 苹果手机怎么传输…

【论文速递】ICCV2021 - 基于超相关压缩实现实时高精度的小样本语义分割

【论文速递】ICCV2021 - 基于超相关压缩的小样本语义分割 【论文原文】&#xff1a;Hypercorrelation Squeeze for Few-Shot Segmentation 【作者信息】&#xff1a;Juhong Min Dahyun Kang Minsu Cho 获取地址&#xff1a;https://openaccess.thecvf.com/content/ICCV2021/…

【DGL】图分类

目录概述数据集定义Data LoaderDGL中的batched graph定义模型训练参考概述 除了节点级别的问题——节点分类、边级别的问题——链接预测之外&#xff0c;还有整个图级别的问题——图分类。经过聚合、传递消息得到节点和边的新的表征后&#xff0c;映射得到整个图的表征。 数据…

pycharm无法通过外网访问阿里云服务器中的Flask解决方案

一、修改/添加安全组端口这是第一种方案&#xff0c;也是能解决大部分问题的一个方案。由于我的服务器是阿里云的&#xff0c;所以在阿里云的ECS云服务器控制台中&#xff0c;管理安全组&#xff0c;添加5000和8000端口以便测试。经过测试&#xff0c;外网依旧无法访问。二、修…

Shell脚本之——Hadoop3单机版安装

目录 1.解压 2.文件重命名 3.配置环境变量 4.hadoop-env.sh 5.core-site.xml 6. hdfs-site.xml 7. mapred-site.xml 8.yarn-site.xml 9.完整脚本代码(注意修改主机名) 10.重启环境变量 11.初始化 12.启动服务 13.jps查询节点 1.解压 tar -zxf /opt/install/hadoo…

【速通版】吴恩达机器学习笔记Part3

目录 1.多元线性回归 a.特征缩放 可行的缩放方式&#xff1a; 1.除以最大值&#xff1a; 2.mean normalization&#xff1a; 3.Z-score normalization b.learning curve: c.learning rate: 2.多项式回归 3.classification logistics regression 1.多元线性回归 其意义很…

UML术语标准和分类

一、UML术语标准 1&#xff0e;中文UML术语标准 中国软件行业协会&#xff08;CSIA&#xff09;与日本UML建模推进协会&#xff08;UMTP&#xff09;共同在中国推动的UML专家认证&#xff0c;两个协会共同颁发认证证书、两国互认&#xff0c;CSIA与UMTP共同推出了UML中文术语…

(record)QEMU安装最小linux系统——TinyCore(命令行版)

文章目录QEMU安装最小linux系统——TinyCore参考QEMU使用qemu创建tinycore虚拟机再次启动文件保存QEMU安装最小linux系统——TinyCore 简单记录安装过程和记录点 参考 [原创] qemu 与 Tiny Core tinycore的探索 QEMU qemu不多介绍&#xff0c;这里是在WSL2上安装的linux版…

最近很火的一部电视(狂飙)像安欣和高启强这样类型的人,谁更合适做软件测试工程师

狂飙》央视收视率狂飙。央视发布《狂飙》收视成绩&#xff0c;全剧平均收视1.54%&#xff0c;平均收视份额6.99%&#xff0c;单集最高收视率2.20%&#xff0c;单集最高收视份额10.69%&#xff1b;晚间电视剧类节目第一。可以说还部剧为今年开了个好头&#xff0c;一开年就引爆收…

财报解读:四季度营收超预期,优步却越来越“不务正业”了

“公司第四季度的业绩表现将是强劲的”。 公布2022年第三季度财报时&#xff0c;优步的高管给出了这样的预告&#xff0c;给资本市场打了一针“强心剂”。然而有人对此表示质疑&#xff0c;后疫情时代&#xff0c;带着新模式、新车型的全新网约车公司层出不穷&#xff0c;车企…

Java面试数据库

目录 一、关系型数据库 数据库权限 表设计及创建 表数据相关 数据库架构优化 二、非关系型数据库 redis 今天给大家稍微整理了一下&#xff0c;内容有数据表设计的三大范式原则、sql查询如何优化、redis数据的击穿、穿透、雪崩等...&#xff0c;以及相关的面试题&#xff0…

Intel中断体系(1)中断与异常处理

文章目录概述中断与异常中断可屏蔽中断与不可屏蔽中断&#xff08;NMI&#xff09;异常异常分类中断与异常向量中断描述符表中断描述符中断与异常处理中断与异常处理过程堆栈切换错误码64位模式下的中断异常处理64位中断描述符64位处理器下的堆栈切换相关参考概述 中断是现代计…

不用创建项目,直接在 VS 里快速测试 C/C++ 代码

概述 Visual Studio 强大、方便&#xff0c;但是每次写代码都要先创建新项目&#xff0c;这对于一些简单的代码测试来说有点不方便。 本文介绍一种使用 VS 快速测试代码的方法。 该方法适用任何版本的 VS。“不用创建项目”&#xff0c;是指不用“手工”创建项目&#xff0c…

Python Scrapy 爬虫简单教程

1. Scrapy install 准备知识 pip 包管理Python 安装XpathCssWindows安装 Scrapy $>- pip install scrapy Linux安装 Scrapy $>- apt-get install python-scrapy 2. Scrapy 项目创建 在开始爬取之前&#xff0c;必须创建一个新的Scrapy项目。进入自定义的项目目录中&am…

爆火出圈的ChatGPT,真的那么好用吗?

近期&#xff0c;ChatGPT在互联网行业爆火&#xff01; 这个由人工智能研究和部署公司OpenAI开发的“交互机器人”&#xff0c;在今年1月其全球月活跃用户已达1亿&#xff0c;成为史上用户增长速度最快的消费级应用。 爆火的ChatGPT到底是什么&#xff1f; ChatGPT是一个原型人…

Java程序的执行顺序、简述对线程池的理解

点个关注&#xff0c;必回关 文章目录一、Java程序是如何执行的二、合理利用线程池能够带来三个好处一、Java程序是如何执行的 我们日常的工作中都使用开发工具&#xff08;IntelliJ IDEA 或 Eclipse 等&#xff09;可以很方便的调试程序&#xff0c;或者是通 过打包工具把项目…

删除Node.js,安装nvm,看这一篇就够了(有坑)

nvm的作用就是可以任意切换Node.js的版本&#xff0c;所以在下载nvm之前&#xff0c;现将系统中的Node.js全部删除&#xff0c;若之前没有安装过&#xff0c;可忽略第一步。 删除Node.js 一、程序和功能处找到Node.js,并删除 二、删除Node.js相关的目录文件 C:\Program Fil…

Science:北京脑研究中心李莹实验室揭示性满足感的分子机制

短暂的社交经历&#xff08;例如&#xff0c;性经历&#xff09;可导致内部状态的长期变化并影响社会行为&#xff0c;如交配、攻击。例如&#xff0c;在成功交配射精后&#xff0c;许多物种迅速表现出对交配倾向的抑制有数小时、数天或更长时间&#xff0c;这种效应称为性满足…

【报复性赚钱】2023年5大风口行业

今天就来和大家分享一下&#xff0c;在时代的洪流下&#xff0c;普通人如何顺应大势抓住机遇&#xff01; 实现人在风口上&#xff0c;猪都会飞起来。 根据对市场的观察及各平台数据分析结果&#xff0c;结合国家政策和经济专家的分析&#xff0c;小编预测了2023年将会迎来大…