• zzulioj--1813--good string(模拟)


    1813: good string

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 93  Solved: 15

    SubmitStatusWeb Board

    Description

    给定一个字符串,判断它是否是good string。

    good string定义为:

    ① 字符s是good string,字符p是good string,字符y也是good string

    ② P和Q都是good string,则PQ是good string

    ③ P是good string,则(P)是good string

    ④ P是good string,则!P是good string

    ⑤ P和Q都是good string,则P|Q和P&Q是good string

    Input

    输入包含多组数据。每组数据为一行字符串,长度不超过100。

    Output

    对于每组数据,如果P是good string则输出"P is a good string",否则输出"P is not a good string"。

    Sample Input

    !spy!(s|p!y))sp|y

    Sample Output

    !spy is a good string!(s|p!y) is a good string)sp|y is not a good string
    我去,上次太着急,没粘代码就走了- -||

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    char str[10010];
    int main()
    {
    	while(scanf("%s",str)!=EOF)
    	{
    		int len=strlen(str);
    		int l=0,r=0;
    		bool flog=true;
    		for(int i=0;i<len;i++)
    		{
    			if(str[i]=='s')
    			continue;
    			else if(str[i]=='p') 
    			continue;
    			else if(str[i]=='y')
    			continue;
    			else if(str[i]=='!')
    			{
    				if(str[i+1]==')'||i==len-1)
    				{
    					flog=false;
    					break;
    				}
    			}
    			else if(str[i]=='(')
    			{
    				l++;
    				if(i==len-1)
    				{
    					flog=false;
    					break;
    				}
    				if(str[i+1]==')')
    				{
    					flog=false;
    					break;
    				}
    			}
    			else if(str[i]==')')
    			{
    				r++;
    				if(i==0||r>l)
    				{
    					flog=false;
    					break;
    				}
    				if(str[i-1]!='p'&&str[i-1]!='s'&&str[i-1]!='y'&&str[i-1]!=')')
    				{
    					flog=false;
    					break;
    				}
    			}
    			else if(str[i]=='&')
    			{
    				if(i==0)
    				{
    					flog=false;
    					break;
    				}
    				if(str[i+1]=='('||str[i+1]=='y'||str[i+1]=='s'||str[i+1]=='p'||str[i+1]=='!');
    				else 
    				{
    					flog=false;
    					break;
    				}
    				if(str[i-1]=='s'||str[i-1]==')'||str[i-1]=='y'||str[i-1]=='p');
    				else
    				{
    					flog=false;
    					break;
    				}
    			}
    			else if(str[i]=='|')
    			{
    				if(i==0)
    				{
    					flog=false;
    					break;
    				}
    				if(str[i+1]=='('||str[i+1]=='y'||str[i+1]=='s'||str[i+1]=='p'||str[i+1]=='!');
    				else 
    				{
    					flog=false;
    					break;
    				}
    				if(str[i-1]=='s'||str[i-1]==')'||str[i-1]=='y'||str[i-1]=='p');
    				else
    				{
    					flog=false;
    					break;
    				}
    			}
    			else
    			{
    				flog=false;
    				break;
    			}
    		}
    		if(r!=l)
    		{
    			flog=false;
    		}
    		printf("%s",str);
    		if(flog)
    		printf(" is a good string
    ");
    		else
    		printf(" is not a good string
    ");
    		memset(str,'',sizeof(str));
    	}
    	return 0;
    }


  • 相关阅读:
    MySQL执行计划解读(转载)
    排序算法
    Linux下在防火墙中开启80端口、3306端口
    Android APN
    PB之——DropDownListBox 与 DropDownPictureListBox
    CSS总则。
    WIN7系统中设置默认登录用户
    Javascript日期比较
    myeclipse中UTF-8设置
    webview loadUrl() 弹出系统浏览器解决办法
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273625.html
Copyright © 2020-2023  润新知