笔记+思路:
代码:
# 得到“答案正确”的条件是:
# 判断输入满足正确答案
# 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
# 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
# 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串
# 已经确定有P和T 元素,P的序号 T的序号,元素长度
def check(element, P, T, number):
left_true = 0
left_false = 0
right_true = 0
right_false = 0
middle_true = 0
middle_false = 0
# 记左侧数
for m in range(0, P):
if element[m] == 'a' or element[m] == 'b' or element[m] == 'c' or element[m] == 'A':
left_true += 1
else:
left_false += 1
for m in range(T + 1, number):
if element[m] == 'a' or element[m] == 'b' or element[m] == 'c' or element[m] == 'A':
right_true += 1
else:
right_false += 1
for m in range(P + 1, T):
if element[m] == 'a' or element[m] == 'b' or element[m] == 'c' or element[m] == 'A':
middle_true += 1
else:
middle_false += 1
# 判别
# 有错误值
if left_false + right_false + middle_false > 0 or middle_true == 0:
return False
elif left_true == 0 and right_true == 0:
return True
elif left_true * middle_true == right_true:
return True
else:
return False
# 首先输入多少个字符串
Q = int(input())
arr = []
flag = False
count = 0
for i in range(Q):
# rstrip:删除 string 字符串末尾的指定字符后生成的新字符串 默认删除空格
arr.append(list(map(str, input().rstrip().split("\n"))))
for i in range(len(arr)):
test = str(arr[i])
# 第i条数据
test1 = test.strip("['").strip("]'")
# 开始判定 如果PT都没有直接报错
if test1.find('P') != -1 and test1.find('T') != -1:
a = test1.index('P')
b = test1.index('T')
# 进行判定
flag = check(test1, a, b, len(test1))
else:
flag = False
if flag and i != Q - 1:
print("YES")
elif flag and i == Q - 1:
print("YES", end="")
elif flag == False and i == Q - 1:
print("NO", end="")
else:
print("NO")