單詞翻轉:
資源限制
時間限制: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;
}
評測結果:

補充:
文章翻轉的時間效率相對較低,有時間會去改變下方法,找出相對較好的解法,敬請期待,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254407.html
標籤:python
