日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10行代码AC——7-2 说反话-加强版 (20 分)——解题报告

發布時間:2024/2/28 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10行代码AC——7-2 说反话-加强版 (20 分)——解题报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

勵志用盡量少的代碼做高效的表達。


題目描述

給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。

輸入格式:
測試輸入包含一個測試用例,在一行內給出總長度不超過500 000的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用若干個空格分開。

輸出格式:
每個測試用例的輸出占一行,輸出倒序后的句子,并且保證單詞間只有1個空格。

輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello


分析:

本題的實質是考察串的倒序運算。
解法1:STL容器中stack棧為容器操作。 定義string型棧,逐個存入單詞后,從棧頂依次輸出即為倒敘。優點是時間復雜度較小:O(n),缺點是代碼相對較長。

解法2:使用algorithm頭文件中的reverse()函數翻轉。 存入容器后,直接調用翻轉函數即可。優點是代碼簡潔,只有10行;缺點是時間復雜度較大:O(nlogn)。

傳送門1——>懶癌的福音——algorithm頭文件函數全集
強烈推薦讀者把兩種解法都嘗試一下,都是很常用的方法。

代碼1:stack棧解法

#include <iostream> #include <stack> #include <string> using namespace std; int main() {stack<string> s; //建立字符串型stack棧string sp; //聲明字符串bool flag=false; while(cin>>sp){s.push(sp);} //需要注意的是:輸入結束要手動輸入^z作為結束標志 //zcout<<"!!!!!!!!!!"<<endl; 這里可以測試截止到目前為止代碼是否錯誤。while(!s.empty()){if(flag)cout<<" ";elseflag=true;cout<<s.top(); //輸出一個元素s.pop(); //移除一個元素}return 0; }

代碼2:reverse()解法

#include<bits/stdc++.h> //萬能頭文件 using namespace std; int main() {vector<string>v; string s; while(cin>>s) v.push_back(s);reverse(v.begin(),v.end());for(int i = 0; i < v.size(); i++) cout << (i == 0 ? "" : " ") << v[i]; return 0; }

stack函數總結:

empty() 堆棧為空則返回真
pop() 移除棧頂元素
push() 在棧頂增加元素
size() 返回棧中元素數目
top() 返回棧頂元素


擇苦而安,擇做而樂,虛擬現實終究比不上真實精彩之萬一。

總結

以上是生活随笔為你收集整理的10行代码AC——7-2 说反话-加强版 (20 分)——解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。