基于栈的可操作判断
描述
假设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]); } }

浙公网安备 33010602011771号