先理解题意:
现在要构造一个长度恰好为 L 的、仅由小写字母组成的字符串,使其纯净力恰好等于 M。
定义一个由小写字母组成的字符串的纯净子串为:所有字符互不相同的子串。 字符串的纯净力定义为:该字符串中长度最大的纯净子串的数量(按起始位置计数,不同起始位置视为不同子串)。
现在给定两个正整数 L 和 M,请你构造一个长度恰好为 L 的、仅由小写字母组成的字符串,使其纯净力恰好等于 M。如果无法构造,请输出 −1。
数据范围:L 不超过 105,M 不超过 L,所有数均为正整数。
输入仅一行,包含两个整数 L 和 M,中间用空格隔开。
若存在满足要求的字符串,输出该字符串;否则输出 −1。答案不唯一时,输出任意一个合法字符串即可。
输入
1 1
输出
a
说明
字符串长度 L=1,纯净力要求 M=1,此时 L=M。
构造全 'a' 字符串 "a",其所有子串均为 "a",最大纯净子串长度为 1,且只有 1 个这样的子串,纯净力恰好为 1。
这是最小的边界情况。
输入
6 6
输出
aaaaaa
说明
字符串长度 L=6,纯净力 M=6,满足 L=M。
构造全 'a' 字符串 "aaaaaa",所有字符相同,任意子串均不包含两个不同字符,因此最大纯净子串长度为 1。长度为 1 的纯净子串共有 6 个,起始位置分别为 1~6,纯净力等于 6。
当 L=M 时,全相同字符是最直接的构造。
输入
5 2
输出
abaaa
说明
字符串长度 L=5,纯净力 M=2,这里 M<L。
先交替放置前 M+1=3 个字符,得到 "aba";剩余 L−(M+1)=2 个字符全部用最后一个字符 'a' 填充,最终得到 "abaaa"。
该字符串中最大纯净子串的长度为 2(只有 'a' 和 'b' 两种字母)。相邻不同字符的对有:位置 1 的 "ab" 和位置 2 的 "ba",共 2 个长度为 2 的纯净子串。因此纯净力为 2,符合要求。
输入
4 3
输出
abab
说明
字符串长度 L=4,纯净力 M=3,M<L 且 M+1=L。
交替放置前 M+1=4 个字符,得到 "abab",正好用完所有长度。此时相邻不同字符对为:"ab"(位置 1)、"ba"(位置 2)、"ab"(位置 3),共 3 个长度为 2 的纯净子串。
最大纯净子串的长度为 2,数目恰好为 3,纯净力等于 M。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.