PAT-乙级-1040-有几个PAT
Updated:
字符串 APPAPT
中包含了两个单词 PAT
,其中第一个 PAT
是第 2 位(P
),第 4 位(A
),第 6 位(T
);第二个 PAT
是第 3 位(P
),第 4 位(A
),第 6 位(T
)。
现给定字符串,问一共可以形成多少个 PAT
?
输入格式:
输入只有一行,包含一个字符串,长度不超过105,只包含 P
、A
、T
三种字母。
输出格式:
在一行中输出给定字符串中包含多少个 PAT
。由于结果可能比较大,只输出对 1000000007 取余数的结果。
输入样例:
APPAPT
输出样例:
2
分析:
本题最关键的是找到每一个A的位置以及数清楚它左边P的数量left和右边T的数量right。对每一个A来说,由它形成的PAT数量为left * right。具体做法是从左向右先找到第一个A,数清楚它左边的P数量left,右边T的数量right,记录下由它行程的PAT数量count,count=left * right。从第一个A移动到字符串最后一位的过程中,遇到P则left减1,遇到A则计算此时的left * right并把结果加到count上,遇到T则right减1。循环完毕,count值即为所求。
代码:
1 |
|