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,一经查实,立即删除!

相关文章

python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?

如何设置这样的长行格式&#xff1f;我想让它的宽度不超过80个字符&#xff1a;logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes[url]], video.title))这是我最好的选择吗&#xff1f;url "Skipping …

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…

Python之字符串转换为日期、结合时区的日期操作

一、字符串转换为日期 方法一 s 2019-01-20 print(datetime.strptime(s, %Y-%m-%d)) # 2019-01-20 00:00:00 方法二 def parse_ymd(s):year_s, mon_s, day_s s.split(-)return datetime(int(year_s), int(mon_s), int(day_s)) s 2019-01-20 res parse_ymd(s) print(res) …

项目学生:带有Jersey的Web服务客户端

这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client &#xff0c; 业务层和带有Spring Data的持久性 。 RESTful Web应用程序洋葱的第一层是Web服务客户端。 它可以用来模仿包含AJAX内容的网页&#xff0c;也可以被webapp的编程用户用来模仿。 注意&am…

华为摄像机搜索软件_别人的终点华为的起点!用普惠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诞生的方式-简单的帮助程序…

scrapy 采集网页出现丢失url的问题

url_list ["http://www.icoat.cc/news/list_18_3.html", "http://www.icoat.cc/news/list_18.html", "http://www.icoat.cc/news/list_18_2.html", ] for ls in url_list:   yield scrapy.Request(urlls, headersheader, callbackself.parseL…

java中重新加载指定文件_java-更改后重新加载属性文件

我将属性文件加载到一个类中,然后在整个应用程序中使用该类来获取它们.public class PropertiesUtil extends PropertyPlaceholderConfigurer {private static Map properties new HashMap();Overrideprotected void loadProperties(final Properties props) throws IOExcepti…

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[ :] 表示多个空…

java按条件查询结果为空_mybatis中查询结果为空时不同返回类型对应返回值问题...

今天在别人的代码基础上实现新需求&#xff0c;看到对于mybatis查询结果的判断不是很正确&#xff0c;如果查询结果为空就会异常&#xff0c;不知道大家有没有这样的疑惑&#xff1a;mybatis中resultType有多种返回类型&#xff0c;对于每种不同类型&#xff0c;查询结果为空时…

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

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

项目学生:分片集成测试数据

这是Project Student的一部分。 其他职位包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层和带有Spring Data的持久性 。 到目前为止&#xff0c;所有集成测试都使用了内存嵌入式数据库&#xff0c;该数据库无法一次又一次地保留信…

BZOJ1036 树的统计(树链剖分+线段树)

【题目描述】 一棵树上有n个节点&#xff0c;编号分别为1到n&#xff0c;每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作&#xff1a; I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问…