九度機試筆記20170903---2

學習《九度機試指南3》如下。
有一個遺留問題 題目1051:數字階梯求和 等待解決,mark一下。


題目1153:括號匹配問題

#include <iostream>
#include <stack>
using namespace std;

stack<int> S;

char src[101];
char dst[101];
int main()
{
    int i;
    while(cin.getline(src,101)){
        for(i=0; src[i]!=0; i++){
            if(src[i]=='('){
               S.push(i);
               dst[i]=' ';
            }else if(src[i]==')'){
                if(S.empty()){
                    dst[i]='?';
                }
                else{
                    dst[i]=' ';
                    S.pop();
                }
            }
            else
                dst[i] = ' ';
        }
        dst[i]='\0';
        while(!S.empty()){
            dst[S.top()] = '$';
            S.pop();
        }
        cout<<src<<endl;
        cout<<dst<<endl;
    }
    return 0;
}

注意:棧的使用,還有難點在於怎麼找到不匹配的左括號的位置,可以定義一個結構體專門記錄,也可以像這裏一樣向棧中存入字符串數組的下標,最後通過這個下標修改相應位置的字符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章