1. 问题描述:
给定一个由大写字母构成的字符串 s,请计算其中有多少个子序列 QAQ。注意,子序列不需要连续。提示:本题数据范围较小,可以直接三重循环枚举三个字母的位置。
输入格式
一行,一个由大写字母构成的字符串 s。
输出格式
一个整数,表示 s 中子序列 QAQ 的个数。
数据范围
所有测试点满足 1 ≤ |s| ≤ 100。
输入样例1:
QAQAQYSYIOIWIN
输出样例1:
4
输入样例2:
QAQQQZZYNOIWIN
输出样例2:
3
来源:https://www.acwing.com/problem/content/description/4085/
2. 思路分析:
分析题目可以知道数据范围比较小,直接枚举字符串的三个位置判断是否等于"QAQ"即可,时间复杂度为O(n ^ 3)。
3. 代码如下:
class Solution:
def process(self):
s = input()
n = len(s)
count = 0
# 暴力枚举
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
if s[i] == "Q" and s[j] == "A" and s[k] == "Q":
count += 1
return count
if __name__ == "__main__":
print(Solution().process())