Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาดัชนีวงเล็บปิดสำหรับวงเล็บเปิดที่ระบุในนิพจน์ใน C++


พิจารณาว่าเรามีนิพจน์ที่มีวงเล็บเหลี่ยม หากได้รับดัชนีของวงเล็บเริ่มต้น เราต้องหาวงเล็บปิดท้ายของวงเล็บนั้น ดังนั้น หากนิพจน์เป็นแบบ:(25*6+(88-32+(50/10)+20)) และดัชนีของวงเล็บเปิดคือ 6 วงเล็บปิดจะอยู่ที่ตำแหน่ง 23

ที่นี่เราจะใช้โครงสร้างข้อมูลสแต็กเพื่อแก้ปัญหานี้ เราจะสำรวจนิพจน์จากดัชนีที่กำหนด และเริ่มกดวงเล็บเปิด เมื่อพบวงเล็บปิด จากนั้นองค์ประกอบป๊อปจากสแต็ก เมื่อสแต็กว่างเปล่า จากนั้นส่งคืนดัชนี

ตัวอย่าง

#include<iostream>
#include<stack>
using namespace std;
void getEndingBracketIndex(string exp, int index){
   int i;
   if(exp[index]!='('){
      cout << exp << "Closing bracket of parentheses started at " << index << " present at index -1\n";
      return;
   }
   stack <int> stk;
   for(i = index; i < exp.length(); i++){
      if(exp[i] == '(')
         stk.push(exp[i]);
      else if(exp[i] == ')'){
         stk.pop();
         if(stk.empty()){
            cout << exp << ", Closing bracket of parentheses started at " << index << " present at index " << i << "";
            return;
         }
      }
   }
   cout << exp << ", Closing bracket of parentheses started at " << index << " present at index -1";
}
int main() {
   getEndingBracketIndex("(25*6+(88-32+(50/10)+20))", 6);
}

ผลลัพธ์

(25*6+(88-32+(50/10)+20)), Closing bracket of parentheses started at 6 present at index 23