#kMPybttg020205. 1469:似乎在梦中见过的样子
1469:似乎在梦中见过的样子
好的,这是整理好的题面,格式清晰。
题目描述
给定一个长度为 ( n ) 的字符串 ( S ),以及一个整数 ( k )。
定义一个子串形如 ( A + B + A ),其中 ( |A| \ge k ),( |B| \ge 1 ),且 ( A, B ) 都是字符串(“+”表示拼接)。
注意:
- 位置不同但内容相同的子串算不同子串;
- 同一个子串可能有不同拆分方式(例如
"aba"可以拆成A="a", B="b"或A="", B="ab"等等),但只要子串相同,就算作同一个。
问:满足条件的子串 ( A+B+A ) 有多少个(不同位置的子串计数)。
输入格式
第一行一个字符串 ( S )。
第二行一个整数 ( k )。
输出格式
输出一个整数,表示满足条件的子串数量。
数据范围
- ( 1 \le |S| \le 1.5 \times 10^4 )
- ( 1 \le k \le 100 )
- 字符串仅由小写字母组成
输入样例 1
aaaaa
1
输出样例 1
6
输入样例 2
abcabcabc
2
输出样例 2
8
样例解释
样例 1
字符串 "aaaaa",( k = 1 )。
我们要找子串形如 ( A + B + A ),且 ( |A| \ge 1, |B| \ge 1 )。
可能的子串(只考虑不同的位置):
- 从位置 1 开始长度 3:
"aaa",可以拆成 A="a",B="a" ✅ - 从位置 1 开始长度 4:
"aaaa",拆成 A="a",B="aa" ✅ - 从位置 1 开始长度 5:
"aaaaa",拆成 A="a",B="aaa" ✅ - 从位置 2 开始长度 3:
"aaa"✅ - 从位置 2 开始长度 4:
"aaaa"✅ - 从位置 3 开始长度 3:
"aaa"✅
共 6 个。
注意:同一个子串在不同位置算不同子串,所以位置 1 的长度 3 子串与位置 2 的长度 3 子串虽然内容相同,但位置不同,算两个。
样例 2
字符串 "abcabcabc",( k = 2 )。
需要 ( |A| \ge 2, |B| \ge 1 )。
符合条件的子串有 8 个(具体略,符合题目给出的 8)。
这样题目就完整了,包括题意、输入输出格式、数据范围、样例及解释。