单词翻转:
资源限制
时间限制:1.0s 内存限制:256.0MB
输入格式
输入包括一个英语句子。
输出格式
按单词的顺序把单词倒序输出
样例输入
I love you
样例输出
you love I
数据规模和约定
简单的字符串操作
思路历程:
这道题目主要就是输入的时候有空格,要用到getline()函数,其作用是接收一行数据,包括空格。然后面临的就是倒序输出的问题,开始我用的是multiset这个容器做的,写完之后发现他会对string类型数据根据字典序自动排序,不会按照接收顺序存放,然后就没有办法,想到用队列来做。
解题方法:
- 声明队列(queue)
不清楚队列的可见:https://blog.csdn.net/weixin_49243150/article/details/113338393
- 获取用户输入的数据,以一个一个单词的顺序存入队列
- 利用循环和队列的入队出队,实现倒序输出
源程序:
#include<iostream>
#include<queue>
#include<string>
using namespace std;
int main()
{
queue<string>m;//队列
string s;//用来获取用户输入的数据
string stu = "";//用来获取一个一个的单词(不包括空格)
while (getline(cin, s))//getline()函数
{
for (int i = 0; i < s.size(); i++)
{
if (s[i] != ' ')
{
stu = stu + s[i];
}
if (s[i] == ' ' || i == s.size() - 1)
{
m.push(stu);//将空格前面的单词存入队列
stu = "";//初始化为空
}
}
break;//执行玩一遍后退出,因为只输入了一行数据
}
while (m.size())
{
for (int i = 0; i < m.size() - 1; i++)
{
m.push(m.front());//将头元素入队
m.pop();//删除头元素
}
cout << m.front() << " ";
m.pop();//将输出完毕的元素删除
}
}
评测结果:
文章翻转:
资源限制
时间限制:1.0s 内存限制:128.0MB
问题描述
输入一段英文,不含标点,将这一段英文以单词为单位倒序输出
输入格式
一段英文(段内不含换行),以换行符结尾。
输出格式
一段英文(段内不含换行),以换行符结尾。
样例输入
aab TTR bbc loV DDE Znr CCD
样例输出
CCD Znr DDE loV bbc TTR aab
数据规模和约定
60%的数据保证单词长度不超过20,字符长度不超过10^3
100%的数据保证单词长度不超过105,字符长度不超过106
说明:
本题文章翻转和单词翻转是一个思路,就是对于文章翻转来说,单词的数目更多,就代表着队列入队出队的次数会成倍增长,不过我拿上单词翻转对应的代码试了一下,时间效率是421ms,变大了很多,但是没有超出题目的界限,我也就没有再去优化程序。
源程序:
#include<iostream>
#include<queue>
#include<string>
using namespace std;
int main()
{
queue<string>m;//队列
string s;//用来获取用户输入的数据
string stu = "";//用来获取一个一个的单词(不包括空格)
while (getline(cin, s))//getline()函数
{
for (int i = 0; i < s.size(); i++)
{
if (s[i] != ' ')
{
stu = stu + s[i];
}
if (s[i] == ' ' || i == s.size() - 1)
{
m.push(stu);//将空格前面的单词存入队列
stu = "";//初始化为空
}
}
break;//执行玩一遍后退出,因为只输入了一行数据
}
while (m.size())
{
for (int i = 0; i < m.size() - 1; i++)
{
m.push(m.front());//将头元素入队
m.pop();//删除头元素
}
cout << m.front() << " ";
m.pop();//将输出完毕的元素删除
}
cout << endl;
}
评测结果:
补充:
文章翻转的时间效率相对较低,有时间会去改变下方法,找出相对较好的解法,敬请期待。