猿创征文 |【算法入门必刷】数据结构-栈(五)
【算法入門必刷】數據結構-棧(五)
- 前言
- 算法入門刷題訓練
- AB5:點擊消除
- 題目分析
- 理論準備
- 題解
- 小結
📦個人主頁:一二三o-0-O的博客
🏆技術方向:C/C++客戶端資深工程師(直播+音視頻剪輯)
👨?💻作者簡介:數據結構算法與音視頻領域創作者
📒 系列專欄:牛客網面試必刷
📣專欄目標:幫助伙伴們通過系統訓練,掌握數據結構與算法,收獲心儀Offer
📝推薦一個找工作神器:牛客刷題網 【面試經驗|實習招聘內推,求職就業一戰解決】
🧡如果對您有幫助的話,歡迎點贊👍收藏📂,關注不迷路
【算法入門必刷】數據結構-棧篇系列文章:
【算法入門必刷】數據結構-棧(一)
【算法入門必刷】數據結構-棧(二)
【算法入門必刷】數據結構-棧(三)
【算法入門必刷】數據結構-棧(四)
【算法入門必刷】數據結構-棧(五)
【算法入門必刷】數據結構-棧(六)
前言
開啟刷題,請點擊右邊鏈接進行跳轉點擊這里
算法入門刷題訓練
AB5:點擊消除
題目分析
描述
牛牛拿到了一個字符串。
他每次“點擊”,可以把字符串中相鄰兩個相同字母消除,例如,字符串"abbc"點擊后可以生成"ac"。
但相同而不相鄰、不相同的相鄰字母都是不可以被消除的。
牛牛想把字符串變得盡可能短。他想知道,當他點擊了足夠多次之后,字符串的最終形態是什么?
根據題目描述,本題是典型的棧的應用。維護一個輔助棧,遍歷字符串,在當前棧非空的前提下,判斷即將遍歷的字符是否與棧頂元素相等,如果相等則進行消除,繼續遍歷。不相等則直接入棧,最后棧中剩余的元素就是最終形態,返回即可。
理論準備
首先我們要掌握stack的一些基礎操作:
-----將元素入棧-----
std::stack mystack;
// 依次將元素1-10入棧
for (int i=1;i<=10;i++) mystack.push(i);
-----判斷stack是否為空-----
std::stack mystack;
for (int i=1;i<=10;i++) mystack.push(i);
// 如果棧不為空,進入循環
while (!mystack.empty())
{
}
----獲取stack中元素數量-----
std::stack mystack;
for (int i=1;i<=10;i++) mystack.push(i);
// 獲取數量
int size = mystack.size();
-----獲取棧頂元素-----
std::stack mystack;
for (int i=1;i<=10;i++) mystack.push(i);
// 獲取棧頂元素
int topNum = mystack.top();
-----彈出棧頂元素-----
std::stack mystack;
int sum (0);
for (int i=1;i<=10;i++) mystack.push(i);
while (!mystack.empty())
{
sum += mystack.top();
// 彈出棧頂元素
mystack.pop();
}
std::cout << "total: " << sum << ‘\n’;
題解
具體的解決方案如下:
當提交成功后,會展示如下界面,那么恭喜這道題目就通過了!
小結
祝愿所有的伙伴都能拿到自己心儀的Offer!📣伙伴們點擊右邊鏈接立刻開啟刷題吧:牛客——刷題網
總結
以上是生活随笔為你收集整理的猿创征文 |【算法入门必刷】数据结构-栈(五)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于VS2015MFC在X86debug
- 下一篇: Excel函数返回定期付息证券的应计利息