CODEVS 1205 单词反转

嗯....

 

这道题看起来挺像一个字符串的题,但其实却错了,它实质上却用了一个栈进行了一个模拟(当然还有一种鬼畜的做法,下面也会介绍到.....

首先先看题:

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 青铜 Bronze
 

 题目描述 

给出一个英语句子,希望你把句子里的单词顺序都翻转过来

输入描述 

输入包括一个英语句子。

输出描述 

按单词的顺序把单词倒序输出

样例输入 

I love you

样例输出

you love I

数据范围及提示

简单的字符串操作

 

思路一:

  因为题目中有“翻转”两个字,首先想到先进后出,直接联想到栈,这里可以用手动栈进行模拟,思路主要是先将所有的字符全部输入,并且将读入的一串字符串倒序压入栈中。

然后用头指针top以此向下遍历,如果找到一个空格,说明这是一个单词,则将这个单词的每个字母依次输出,并加上空格(注意不仅要判断空格,还要特判一下是否为最后一个单词)....并且注意此种思路是对每一个字母进行操作

见手动栈代码:

 1 #include <cstdio>2 #include <cstring>3 4 5 using namespace std;6 7 8 char s[105], stack[105];9 int main()
10 {
11     int top = -1;//初始化栈为空 
12 
13     gets(s);//将所有字符读入 
14 
15     for(int i = strlen(s); i >= 0; i--){//倒序 
16         if(s[i] != ' '&& i != 0){//    确定两个边界 
17             stack[++top]=s[i];// 只将除空格外的字符入栈 
18         }
19         else// 遇到空格或者处理最后一个元素 
20         {
21             if(i == 0){//当最后一个元素处理时 
22                 stack[++top] = s[i];//入栈 
23                 while(top)//判断栈是否为空 
24                     printf("%c",stack[top--]);//输出栈,不需加空格 
25             }
26             //如果不是处理到最后一个元素,而只是遇到了空格而隔开 
27             while(top)//不必加else判断,如果执行了上面的if语句,那么执行完之后栈肯定为空,下面语句不会再执行 
28                 printf("%c",stack[top--]);
29             printf(" ");//出栈时加上空格 
30         }
31     }
32     return 0;
33 }
手动栈

 

思路二:

  同样是用栈,但是还可以用STL库中的栈,这样避免了头指针的麻烦性。思路大体就是定义一个string类型的栈,将输入的每一个单词作为一个整体压入栈中(注意while语句有坑,当你输入时会输入不完,所以在自己测试中要用Ctrl + z 停止操作,所以还是比较支持手动栈,这种做法不太严谨....)。当栈不为空的时候, 就从顶部输出每一个单词,并且给它在后面加上空格 ....此种思路是对每一个单词进行操作

见STL库栈代码:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<stack>
 4 
 5 using namespace std;
 6 
 7 stack<string> st;// 注意将栈设为字符串类型,压入的每一个元素都可以为一个字符串 
 8 
 9 int main()
10 {
11         string a;//存放单个单词的临时字符串
12         while(cin>>a)                       
13         {
14             st.push(a);//cin读取第一个单词,push入栈
15             }
16             while(!st.empty())//当栈非空时重复下列操作
17             {
18                 cout<<st.top()<<" "; //输出栈顶元素,即最后一个单词
19                 st.pop();//删除已输出的单词,此时倒数第二个单词为栈顶
20             }
21             return 0;
22     }
23     //自己测试时需Ctrl+Z结束读取
STL栈

 

思路三:

  这个题当然除了栈还可以用基础的string操作....(感觉这种操作好鬼畜啊QAQ....具体的思路就是用string类型的a来储存每一次读入的单词,我们再用一个string类型的s来储存答案,因为要逆着输出,而这里与上两个思路不太相同,前两个思路都是输出时进行倒序,而这种思路就是存储时就倒着存储...所以将原来s的基础上再在它的前面加上a和空格即可....(太鬼畜了...解释不清楚,还是看代码吧....(注意这种做法也是不太严谨,还是输入时要用Ctrl + z停止输入)

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     string a,s;
10     s=" ";
11     while(cin>>a)
12            s=a+" "+s;//即为思路中解释不明白的地方... 
13     cout<<s;
14 return 0;
15 }
鬼畜操作

 

嗯....

 

这三个思路其实哪一个都不错,取决于个人的习惯,思路一和思路二差不多,比较容易思考但代码有难度,但思路三思考起来有点困难,但是代码简便易懂....(总体来说这道题的解法还是比较全的了....

 

 

转载于:https://www.cnblogs.com/New-ljx/p/10473621.html

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

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

相关文章

NodeJS中resolve添加地址无效

今天一个朋友在群里问了这样一个问题&#xff0c;他使用url.resolve()添加地址无效&#xff0c;我看了一下&#xff0c;发现是他没有注意细节&#xff0c; resolve可以在二级目录下增加&#xff0c;他使用的时候只是一级目录&#xff0c;所以添加会有问题。他使用的是如下这种…

centos配置jdk的环境变量

1、首先呢&#xff0c;centos下的JDK环境配置分两种情况&#xff0c;一直是root用户级别的jdk配置&#xff0c;另一种是其他用户组级别的配置。这里讲解的是root用户级别的配置。 我们已经下载解压好了jdk的目录。如下 2、编辑环境变量的配置文件&#xff1a; vi /etc/profile…

华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全

看点&#xff1a;华为好望的求索启示录&#xff01;如何让老百姓用上实惠的AI&#xff1f;你也许不知道&#xff0c;高空抛物已是城市生活中的一大难以治理的安全隐患。一个小小的烟头、水果从高处扔下来&#xff0c;就可能引起严重火灾、人员伤亡、财物破坏&#xff0c;事发后…

在WebGL场景中进行棋盘操作的实验

这篇文章讨论如何在基于Babylon.js的WebGL场景中&#xff0c;建立棋盘状的地块和多个可选择的棋子对象&#xff0c;在点选棋子时显示棋子的移动范围&#xff0c;并且在点击移动范围内的空白地块时向目标地块移动棋子。在这一过程中要考虑不同棋子的移动力和影响范围不同&#x…

em算法python代码_EM算法的python实现的方法步骤

导读热词前言&#xff1a;前一篇文章大概说了EM算法的整个理解以及一些相关的公式神马的&#xff0c;那些数学公式啥的看完真的是忘完了&#xff0c;那就来用代码记忆记忆吧&#xff01;接下来将会对python版本的EM算法进行一些分析。EM的python实现和解析引入问题(双硬币问题)…

第一阶段·Linux运维基础-第2章·Linux系统目录结构介绍

01 变量与PS1 02 添加用户 03 关闭SELinux 04 关闭iptables 05 显示中文乱码排查过程 06 总结 07 目录结构课程内容 08 Linux目录结构特点 09 Linux核心目录简介 10 Linux目录文件之配置文件 11 Linux核心目录文件之DNS及屌丝逃离洗浴中心之路 12 Linux核心目录文件…

使用junit-drools进行JBoss Drools单元测试

最近&#xff0c;我一直在大量使用JBoss Drools进行项目。 我不是Drools专家-我也不太相信这个框架&#xff0c;或者可能不是只相信该项目中的特定用例-我发现很难为基于Drools的业务规则编写简单&#xff0c;可维护的单元测试 。 这就是junit-drools诞生的方式-简单的帮助程序…

plsql 为空显示 0 的函数_不加班只加薪!从0到1教你制作出入库进销存表格

出入库表应用十分广泛&#xff0c;是每个公司都用到的表格&#xff0c;下面我们来看看怎么从一张空白表一步一步实现《出入库表》的制作&#xff0c;目的是做到只需要记录出库入库流水&#xff0c;自动对库存及累计出入库数量进行计算、实时统计。出入库表构成做一个出入库表&a…

eShopOnContainers学习系列(一):Swagger的使用

最近在看eShopOnContainer项目&#xff0c;抽取一下其中的基础知识点&#xff0c;做个记录&#xff0c;有兴趣的可以看下。 新建一个.net core API项目&#xff0c;添加Nuget包 Swashbuckle.AspNetCore.SwaggerGen、Swashbuckle.AspNetCore.SwaggerUI&#xff1a; 然后在启动文…

结合WebSocket编写WebGL综合场景示例

在WebGL场景中导入多个Babylon骨骼模型&#xff0c;在局域网用WebSocket实现多用户交互控制。 首先是场景截图&#xff1a; 上图在场景中导入一个Babylon骨骼模型&#xff0c;使用asdw、空格、鼠标控制加速度移动&#xff0c;在移动时播放骨骼动画。 上图在场景中加入更多的骨…

awk----基本用法

awk具体的请看这个 https://www.cnblogs.com/bwbfight/p/9402738.html awk 竟然自诩一种语言&#xff0c;ok.... 牛 既然这样就学习一下吧 awk -F‘[指定多个分隔符]’ 比如 awk -F[ :]表示指定&#xff1a;空格为分隔符 涉及多个重复分割符可以这样指定 awk -F[ :] 表示多个空…

object picker 微信小程序_微信小程序 demo分享

选择器示例demo&#xff1a;1.普通选择器 2.多列选择器 3.时间选择器 4.日期选择器 5.省市区选择器wxml普通选择器&#xff1a;(普通数组)当前选择&#xff1a;{{array[index]}}普通选择器2&#xff1a;(普通json格式数组)当前选择&#xff1a;{{objectArray[objectIndex].name…

Unity插件Gaia使用介绍

零基础创建Unity精美场景地形&#xff08;使用插件Gaia&#xff09;一、先上最终效果图二、软件环境搭建1.Unity5.6.0下载链接https://unity3d.com/cn/get-unity/download/archive?_ga2.110664517.1175563345.1516068066-173539005.15020707552.Gaia Unity地形制作插件下载链…

在Spring MVC中使用多个属性文件

每个人都听说过将单个Web应用程序组合成一个大型应用程序的门户。 门户软件的工作原理类似于mashup &#xff0d;来自多个来源的内容在单个服务中被拾取&#xff0c;大部分显示在单个网页中。 门户软件还允许在嵌入到门户软件中的所有单个Web应用程序&#xff08;独立模块&…

汇编语言实验一

实验任务 &#xff08;1&#xff09;使用debug&#xff0c;将程序段写入内存&#xff0c;逐条执行&#xff0c;观察cpu中相关寄存器内容变化。 完成此实验&#xff0c;可用e命令或a命令。 e命令改写内存的内容&#xff0c;如图&#xff1a; 我没有一气喝成&#xff0c;一开始便…

python学习 day6 (3月7日)

#__author : liuyang #date : 2019/3/7 0007 a [a , b , c] b [] print(a is b ) # 空元组 可以 空列表 不可以 print(tuple(a))题目&#xff1a; l1 [11, 22, 33, 44, 55] #将此列表索引为奇数的对应元素全部删除 # 错误示例 for l in range(len(l1)):print(l)if l % 2…

java jni helloword_JNI入门教程之HelloWorld篇

JNI入门教程之HelloWorld篇来源:互联网 宽屏版 评论2008-05-31 09:07:11本文讲述如何使用JNI技术实现HelloWorld&#xff0c;目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。java Native Interface(JNI)是Java语言的本地编程接口&#xff0c;是J2SDK的一部分。在java…

select多查询,自连接,join 等

题目来源于leetcode中的数据库部分&#xff1a;181. Employees Earning More Than Their Managers 题目&#xff1a;The Employee table holds all employees including their managers. Every employee has an Id, and there is also a column for the manager Id. ----------…

有时候eclipse 导入maven项目 启动的时候回出现这样一个问题

严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvcController]]at java.util.conc…

公众平台模板消息所在行业_第三方工具微信公众号模板消息群发如何操作?

当下&#xff0c;公众平台模板消息功能仅支持添加模板&#xff0c;修改所在行业&#xff0c;如果想要群发模板消息&#xff0c;可以自己根据公众平台的接口编程实现&#xff0c;也可通过微号帮平台的模板消息群发功能实现&#xff0c;均可以让微信公众号群发模板消息&#xff0…