首页 > 试题广场 >

弹吉他

[编程题]弹吉他
  • 热度指数:24 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛牛的吉他老师牛妹告诉他,吉他初学者需要熟练弹奏三个旋律:,即:吉他从下到上一共 根弦,依次编号为 ~ ,然后右手分别用相应的手指按照上述顺序拨动对应的弦。

牛牛为了测试牛妹老师的专业性,故特意出了一个问题刁难她。

首先,牛牛给三个基本旋律编个号, 号对应 号对应 号对应

接着,给出一个仅包含数字 的序列,再将这个序列转化成对应的旋律,例如:序列为 ,那么对应的旋律为

然后,牛牛即兴弹奏一曲,他希望牛妹在听完之后能够回答出,这段即兴弹奏中一共出现了多少次事先定义的旋律。

输入描述:
本题为多组测试数据,第一行输入一个正整数 ,代表测试数据组数。

对于每组测试数据,第一行输入一个仅包含 的字符串 ,代表牛牛事先指定的旋律。
第二行输入一个仅包含 ~ 的字符串 ,代表牛牛弹奏的旋律。


输出描述:
对于每段演奏,一行输出一个整数,代表这段演奏一共包含了多少次事先指定的旋律。
示例1

输入

1
22
532313235323132353231323

输出

2
先将基本旋律存到一个set中,然后每一段旋律都检验其连续子串是否在基本旋律中
T = int(input())
base_melody = set(["43231323", "53231323", "63231323"])
for _ in range(T):
    count = 0
    melody = input()
    n = len(melody)
    for start in range(n - 7):
        if melody[start:start + 8] in base_melody:
            count += 1
    print(count)


发表于 2021-01-21 17:41:36 回复(0)