基于栈的可操作判断

描述

 

假设I和O分别代表入栈和出栈操作。栈的始态和终态均为空。入栈和出栈的操作序列可以表示为仅由I和O组成的序列,称可操作的序列为合法序列,否则称为非法序列。请设计一个算法,判断所给的操作序列是否合法。若合法输出“true”,反之输出“false”。

 

输入

 

多组数据,每组数据为一行长度不定的操作序列A。当A为“0”时,输入结束。

 

输出

 

对应每组数据输出一行。若序列A为合法序列输出“TRUE”,反之输出“FALSE”。

 

输入样例 1 

IOIOIO
IIOOOO
0

输出样例 1

TRUE
FALSE

 

#include<iostream>
using namespace std;

int  Judge(char str[]){
    int i=0;
    int I=0;
    int O=0;
    while(str[i]!='\0'){
        switch(str[i]){
            case'I':I++;break;
            case'O':O++;
            if(O>I){
                cout<<"FALSE"<<endl;
                return 0;
            }
            break;    
        }
        i++;
    }
    if(I==O){
        cout<<"TRUE\n";
        return 1;
    }    
    else {
        cout<<"FALSE\n";
        return 1;
    }
}

int main(){
    while(1){
        string str;
        cin>>str;
        if(str=="0")
            return 0;
        Judge(&str[0]);
    }
}

 

posted @ 2020-11-15 16:56  奕玑  阅读(230)  评论(0)    收藏  举报