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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断一个字符串中括号是否匹配

發(fā)布時間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断一个字符串中括号是否匹配 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

從鍵盤讀入一個字符串,其中只含有() {} [ ]?,判斷該字符串中的每種括號是否成對出現(xiàn)。

提示:可借助棧來實現(xiàn),括號必須配對出現(xiàn),如()[ ]{},這是匹配的括號,如([{])},這是不匹配的括號(中間無空格)。

輸入描述:

輸入一個字符串(中間不包含空格)

輸出描述:

匹配輸出yes,否則輸出no


輸入樣例:

(([{}]))

輸出樣例:

yes


思路:

1. 括號匹配的四種可能性:

①左右括號配對次序不正確
②右括號多于左括號
③左括號多于右括號
④左右括號匹配正確

2. 算法思想:
1.順序掃描算數(shù)表達(dá)式(表現(xiàn)為一個字符串),當(dāng)遇到三種類型的左括號時候讓該括號進(jìn)棧;
2.當(dāng)掃描到某一種類型的右括號時,比較當(dāng)前棧頂元素是否與之匹配,若匹配,退棧繼續(xù)判斷;
3.若當(dāng)前棧頂元素與當(dāng)前掃描的括號不匹配,則左右括號配對次序不正確,匹配失敗,直接退出;
4.若字符串當(dāng)前為某種類型的右括號而堆棧已經(jīng)空,則右括號多于左括號,匹配失敗,直接退出;
5.字符串循環(huán)掃描結(jié)束時,若堆棧非空(即堆棧尚有某種類型的左括號),則說明左括號多于右括號,匹配失敗;

6.正常結(jié)束則括號匹配正確。



#include <iostream> #include <cstring> #include <stack>using namespace std;int main() {stack<char>a;int flag=1,i;char ch[100];cin>>ch;for(i=0;i<strlen(ch);i++){if(ch[i]=='{'||ch[i]=='('||ch[i]=='[')a.push(ch[i]);else{if(a.empty()==true){flag=0;break;}else if((ch[i]=='}'&&a.top()=='{')||(ch[i]==')'&&a.top()=='(')||(ch[i]==']'&&a.top()=='['))a.pop();else{flag = 0;break;}}}if(flag==0)cout<<"no";elsecout<<"yes"; }

總結(jié)

以上是生活随笔為你收集整理的判断一个字符串中括号是否匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。