zoukankan      html  css  js  c++  java
  • 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;
    }


  • 相关阅读:
    Cuckoo for Hashing_双哈希表
    nyoj113_字符串替换
    nyoj366_D的小L_字典序_全排列
    二叉树的前序 中序 后序 遍历(递归/非递归)
    Java 学习路线
    leetcode 04 Median of Two Sorted Arrays
    ThreadLocal 的机制与内存泄漏
    try finally 执行顺序问题
    Java中的类加载器
    快速理解Java中的七种单例模式
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273625.html
Copyright © 2011-2022 走看看