判斷字符串中的括號是否成對出現


基本思路:可用棧來解決;遍歷字符串,如果遇到左括號,則將左括號入棧,如果遇到右括號,則判斷棧頂的元素是否為左括號,如果為左括號則彈出棧頂元素,然后繼續字符串遍歷,遍歷結束后,如果棧為空,則認為括號是成對出現。

下面貼上實現代碼:

 1 #include <iostream>
 2 #include <stack>
 3 using namespace std;
 4 
 5 int _tmain(int argc, _TCHAR* argv[])
 6 {
 7     string sss = "((1+(2+3))+6))";
 8     stack<char> st;
 9     bool bFlag = true;
10     for (auto ch : sss)
11     {
12         if (ch == '(')
13         {
14             st.push(ch);
15         }
16         else
17         {
18             if (ch == ')')
19             {
20                 if (st.empty())
21                 {
22                     bFlag = false;
23                     break;
24                 }
25                 else
26                 {
27                     st.pop();
28                 }
29             }
30         }
31     }
32     if (st.empty() && bFlag)
33     {
34         cout << "pipei" << endl;
35     }
36     else
37     {
38         cout << "bu pipei" << endl;
39     }
40 
41     system("PAUSE");
42     return 0;
43 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM