美文网首页
1003 我要通过! (20分)

1003 我要通过! (20分)

作者: 忘了呼吸的那只猫 | 来源:发表于2020-06-14 14:48 被阅读0次

题目

“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

  • 1.字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
  • 2.任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A 组成的字符串;
  • 3.如果 aPbTc是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c均或者是空字符串,或者是仅由字母 A组成的字符串。
    现在就请你为PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式:
每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。

输出格式:
每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO

输入样例:

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

输出样例:

YES
YES
YES
YES
NO
NO
NO
NO

这道题的题目让我觉得有点懵,读了几遍没搞懂(可能是我有点迟钝),我对这道题的理解是输入的字符串必须是包含P,A,T这三个字符,且PT大概只有一个,但A的个数是随机的,于是我第一想法是使用正则表达式来匹配字符,于是乎我写了下面的代码:

import re
in_total = eval(input())
datas = []
for i in range(in_total):
    data = input()
    datas.append(data)
for data in datas:
    if re.match(r'[PAT]+',data):
        b = data.strip('A')
        if re.match(r'PA{1,2}T',b):
            print('YES')
        else:
            print('NO')
    else:
        print('NO')

结果发现只是部分正确
我就有点想不通问题到底出在什么地方,最后发现,字符串中的A是有规律的,
字母PA的个数乘以PT中间的A的个数等于T之后的A的个数
如下图:


于是乎改了一下代码
in_total = eval(input())
datas = []
for i in range(in_total):
    data = input()
    datas.append(data)
for data in datas:
    P_num = data.count('P')
    A_num = data.count('A')
    T_num = data.count('T')
    if len(data) == P_num+A_num+T_num and P_num != 0 and A_num != 0 and T_num !=0:
        P_i = data.index('P')
        T_i = data.index('T')
        if P_i*(T_i-P_i-1) == (len(data)-T_i-1):
            print('YES')
        else:
            print('NO')
    else:
        print('NO')

成功了,还真是有些坑

相关文章

  • 1003 我要通过

    题目链接: https://pintia.cn/problem-sets/994805260223102976/p...

  • 1003 我要通过

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满...

  • 1003 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满...

  • 1003. 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下...

  • 1003.我要通过!

    判断规则 这道题一共有三个规则: 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;任意形如 xPAT...

  • 1003. 我要通过!

    原题链接我要通过!: “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— ...

  • PAT 1003 我要通过!

    这是PAT乙级题库中的第三道题,一开始没有理解题目的第三个条件的意思,可能因为第一次做,所以对命题的意图理解不到,...

  • 1003. 我要通过!(20)

    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下...

  • 1003. 我要通过!(20)

    传送门 PAT (Basic Level) Practise (中文)1003. 我要通过!(20) 题目 “答案...

  • 1003 我要通过! (20分)

    题目 “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字...

网友评论

      本文标题:1003 我要通过! (20分)

      本文链接:https://www.haomeiwen.com/subject/epvxxktx.html