酷代码 AI
菜单

给你两个字符串 S 和 T。你需要找出 S 中有多少个连续子串,能够与字符串 T 相匹配。 匹配规则如下: 进行匹配的 S 的子串,其长度必须与 T 的长度完全相同。 对于字符串 T 中的 ? 字符,它可以匹配 S 子串中对应位置的任意字符。 对于字符串 T 中的字母(a, b, A, B),它可以与 S 子串中对应位置的字母进行对应字母但是大小写不同的匹配。例如,a 可以匹配 A(但是不能匹配 a),B 可以匹配 b。 请你计算出 S 中总共有多少个这样的匹配子串。 输入 输入两行。 第一行输入字符串 S,保证只包含 a,b,A,B 这四种字符。 第二行输入字符串 T,保证只包含 a,b,A,B,? 这五种字符。 输出 输出一个整数,表示 S 中能与 T 匹配的子串数量。 样例输入 复制 AabAaBAAbb a?B 样例输出 复制 3 提示 对于 100% 的数据,1≤∣T∣≤∣S∣≤1000。 来源/分类 蓝桥杯 2025国赛

```python # 读取输入的两个字符串 S = input() T = input() # 获取字符串 S 和 T 的长度 len_S = len(S) len_T = len(T) # 初始化匹配子串的数量为 0 count = 0 # 遍历字符串 S 可能的子串起始位置 for i in range(len_S - len_T + 1): # 取出当前子串 sub_S = S[i:i + len_T] # 标记当前子串是否匹配 is_match = True # 遍历子串和 T 的每个字符 for j in range(len_T): # 如果 T 中当前字符是 '?',继续检查下一个字符 if T[j] == '?': continue # 如果大小写转换后不匹配,标记为不匹配并跳出循环 elif T[j].isupper() and sub_S[j].islower() and T[j].lower() != sub_S[j]: is_match = False break elif T[j].islower() and sub_S[j].isupper() and T[j].upper() != sub_S[j]: is_match = False break # 如果当前子串匹配,匹配子串数量加 1 if is_match: count = count + 1 # 输出匹配子串的数量 print(count) ``` [2025-12-13 11:00:54 | AI问答 | 311点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多