天天看點

判斷括号的比對性的一種算法

int syntax_check(const char *string)

{

        const char *src = string;

        int total = 0;

        int flag = 0;

        while (*src) {

                switch (*src) {

                        case '{':    //如果是正括号,隻管将計數器遞加,因為“可能”後面會将它遞減的,未來是未決的

                                total++;

                                flag = 1;

                                break;

                        case '}':  

                                if (flag) 

                                        return -1;

                                total--;

                        default:

                                flag = 0;

                }

                if (total < 0) {   //隻要計數器小于0了,就說明已經多了一個反括号,由于是向後這一個方面掃描的,是以不能指望再有正括号與之抵消了

                        break;

                *src ++;

        }

        return total;

}

 本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1271171

繼續閱讀