【C++】每日一練(有效的括號)

本篇博客給大家帶來的是用C++語言來解答有效的括號!

🐟🐟文章專欄:每日一練

🚀🚀若有問題評論區下討論,我會及時回答

??歡迎大家點贊、收藏、分享!

今日思想:不服輸的少年啊,請你再努力一下!

題目描述:?

思路:

? ? ? ? 我們利用棧來解答,首先遍歷數組我們找左括號把他放到棧里,然后再找游括號來看看是否與之匹配。如果遍歷完之后棧為空代表匹配完成返回true,反之返回false。

? ? ? ? 注意如果沒學習過棧的可以看看這篇博客:【C++】數據結構 棧的實現-CSDN博客

代碼實例:

typedef char STDataType;
typedef struct Stack
{STDataType* arr;int top;//指向棧頂的結構int capacity;//容量
}ST;//棧的初始化
void STInit(ST* ps)
{ps->arr = NULL;ps->top = ps->capacity = 0;
}
//入棧-棧頂
void StackPush(ST* ps, STDataType x)
{assert(ps);if (ps->top == ps->capacity){//空間不夠-增容int newCapacity = ps->capacity == 0 ? 4 : 2*ps->capacity;STDataType* tmp = (STDataType*)realloc(ps->arr, newCapacity * sizeof(STDataType));if (tmp == NULL){perror("realloc fail!");exit(1);}ps->arr = tmp;ps->capacity = newCapacity;}//空間夠了ps->arr[ps->top++] = x;
}
//判斷棧是否為空
bool StackEmpty(ST* ps)
{assert(ps);return ps->top == 0;
}
//拿棧頂的數據
STDataType StackTop(ST* ps)
{assert(!StackEmpty(ps));return ps->arr[ps->top - 1];
}
//棧的銷毀
void STDestroy(ST* ps)
{if (ps->arr)free(ps->arr);ps->arr = NULL;ps->top = ps->capacity = 0;
}
//出棧-棧頂
void StackPop(ST* ps)
{assert(!StackEmpty(ps));--ps->top;
}
bool isValid(char* s) 
{ST st;STInit(&st);char* pi=s;//遍歷所有的字符串swhile(*pi !='\0'){if(*pi=='(' ||*pi=='[' ||*pi=='{'){StackPush(&st,*pi);}else{//找右括號并且與之匹配if(StackEmpty(&st))//判斷棧是否為空{STDestroy(&st);return false;}char top=StackTop(&st);if((top=='(' && *pi != ')')|| (top=='[' && *pi !=']')|| (top=='{' && *pi !='}')){STDestroy(&st);return false;}StackPop(&st);}pi++;}//棧為空,說明所有的左括號都已經匹配完,反之非有效字符bool ret =StackEmpty(&st)?true:false;return ret;
}

完!!?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897793.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Embedding模型到底是什么?

嵌入模型(Embedding Model)是一種將高維數據映射到低維空間的工具,廣泛應用于自然語言處理(NLP)、推薦系統和圖像識別等領域。它的核心目標是將復雜的數據(如文本、圖像或用戶行為)轉換為稠密的…

Centos離線安裝perl

文章目錄 Centos離線安裝perl1. perl是什么?2. Centos下載地址?3. perl的安裝4. 安裝結果驗證 Centos離線安裝perl 1. perl是什么? Perl 是一種 高級腳本語言,誕生于 1987 年,以強大的 文本處理能力 和靈活性著稱&…

快速學習Bootstrap前端框架

什么是 Bootstrap? Bootstrap 是一個開源的前端框架,用于快速開發響應式(Responsive)和美觀的網頁。它包含: ? HTML 組件(導航欄、按鈕、表單等) ? CSS 樣式(網格系統、排版、顏色等) ? JavaScript 交互(模態框、輪播圖、工具提示等) 官網:Bootstrap The mo…

51單片機的keil c51軟件安裝教程

Keil(C51)介紹、下載、安裝與注冊_keil c51-CSDN博客 參考 安裝 不一定是這個大小,也可以下載別的版本KEID C51 注冊 加入芯片型號 …

DeepIn Wps 字體缺失問題

系統缺失字體 Symbol 、Wingdings 、Wingdings2、Wingdings3、MT—extra 字體問題 問了下DeepSeek 在應用商店安裝或者在windows 里面找 裝了一個GB-18030 還是不行 在windows里面復制了缺失的字體 將字體復制到DeepIn 的字體目錄(Ubuntu 應該也是這個目錄&am…

chebykan閱讀收尾

sciml SciML 是 科學機器學習 (Scientific Machine Learning) 的縮寫,它指的是將機器學習方法應用于解決科學問題,例如物理、化學、生物學等領域中的問題。SciML 旨在利用機器學習的強大能力來提高科學計算的效率和準確性。 SciML 的主要問題: 數據獲取…

SpringBoot使用Logback日志框架與綜合實例

日志框架的使用,系列文章: 《SpringBoot使用Logback日志框架與綜合實例》 《SpringBoot使用@Slf4j注解實現日志輸出》 《Log4j2日志記錄框架的使用教程與簡單實例》 《SpringBoot使用AspectJ實現AOP記錄接口:請求日志、響應日志、異常日志》 《SpringBoot使用AspectJ的@Arou…

【性能測試】Jmeter詳細操作-小白使用手冊(2)

本篇文章主要介紹Jmeter中如何使用 JSON斷言、同步定時器、事務控制器、CSV數據文件設置、HTTP Cookie管理器 目錄 一:JSON斷言 1:正確結果展示 2:錯誤結果展示 3:JSON配置 (1)Additionally assert …

分布式鎖—Redisson的同步器組件

1.Redisson的分布式鎖簡單總結 Redisson分布式鎖包括:可重入鎖、公平鎖、聯鎖、紅鎖、讀寫鎖。 (1)可重入鎖RedissonLock 非公平鎖,最基礎的分布式鎖,最常用的鎖。 (2)公平鎖RedissonFairLock 各個客戶端嘗試獲取鎖時會排隊,按照隊…

國產編輯器EverEdit - 腳本(解鎖文本編輯的無限可能)

1 腳本 1.1 應用場景 腳本是一種功能擴展代碼,用于提供一些編輯器通用功能提供不了的功能,幫助用戶在特定工作場景下提高工作效率,幾乎所有主流的編輯器、IDE都支持腳本。 ??EverEdit的腳本支持js(語法與javascript類似)、VBScript兩種編程…

服務器上的nginx因漏洞掃描需要升級

前言 最近客戶聯系說nginx存在安全漏洞 F5 Nginx 安全漏洞(CVE-2024-7347) F5Nginx是美國F5公司的一款輕量級Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like協議下發行。F5 Nginx存在安全漏洞,該漏洞源于可能允許攻擊者使用特制的…

ASP.NET CORE MVC EF框架

1.一個視圖中的多個表單Form中的變量。 方式一:視圖中跨Form變量不能用,得各自定義變量否則編譯不能通過。變量名還不能相同。 或者方式二:在Form之外定義變量 {ViewData["Title"] "ExpenseForm"; }  {L…

【MySQL 中 `TINYINT` 類型與布爾值的關系】

MySQL 中 TINYINT 類型與布爾值的關系 在 MySQL 數據庫中,BOOLEAN 類型并不存在,BOOLEAN 或 BOOL 都是 TINYINT(1) 的別名。通常,TINYINT(1) 類型用于存儲布爾值。 1. TINYINT 類型介紹 TINYINT 是一個占用 1 字節的整數類型,取…

【Rust基礎】Rust后端開發常用庫

使用Rust有一段時間了,期間嘗試過使用Rust做后端開發、命令行工具開發,以及做端側模型部署,也嘗試過交叉編譯、FFI調用等,也算是基本入門了。在用Rust做后端接口開發時,常常會找不到一些合適庫,而這些庫在J…

[leetcode]位運算

一.AND &運算 注:兩個操作數做&運算結果是不會變大的 二.OR |運算 注:兩個操作數做|運算結果是不會變小的 三.XOR(異或) ^運算 注:結果可能變大也可能變小也可能不變,但是不會導致進位,比如兩個四位的數字做…

常見FUZZ姿勢與工具實戰:從未知目錄到備份文件漏洞挖掘

本文僅供學習交流使用,嚴禁用于非法用途。未經授權,禁止對任何網站或系統進行未授權的測試或攻擊。因使用本文所述技術造成的任何后果,由使用者自行承擔。請嚴格遵守《網絡安全法》及相關法律法規! 目錄 本文僅供學習交流使用&am…

前置機跟服務器的關系

在復雜的IT系統架構中,前置機與服務器的協同配合是保障業務高效、安全運行的關鍵。兩者的關系既非簡單的上下級,也非獨立個體,而是通過功能分層與職責分工,構建起一套既能應對高并發壓力、又能抵御安全風險的彈性體系。 在當今復…

MySQL中有哪些索引

1,B-Tree索引:常見的索引類型 2,哈希索引:基于哈希表實現,只支持等值查詢 ,只有Memory存儲引擎和NDB Cluster存儲引擎顯示支持哈希索引 3,全文索引:可在字符列上創建(T…

Python爬蟲---中國大學MOOC爬取數據(文中有數據集)

1、內容簡介 本文為大二在校學生所做,內容為爬取中國大學Mooc網站的課程分類數據、課程數據、評論數據。數據集大佬們需要拿走。主要是希望大佬們能指正代碼問題。 2、數據集 課程評論數據集,343525條(包括評論id、評論時間、發送評論用戶…

Tomcat 安裝

一、Tomcat 下載 官網:Apache Tomcat - Welcome! 1.1.下載安裝包 下載安裝包: wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz 安裝 javajdk。 yum install java-1.8.0-openjdk.x86_64 -y /etc/altern…