给定一个字符串和一个整数k,我们需要对字符串中的字符重新排序,使其成为k个相似子串的串联。如果不可能,则输出结果为“Impossible”。
string = "malaalam";
K = 2;
res = solve(s, K);
登录后复制
示例(使用地图)
让我们有一个字符串“mottom”并且 K=2。给定的字符串可以表示为 2 个子字符串的串联,如 tomtom、motmot omtomt 等。与所有 3 个子字符串一样,当 k = 2 时,两个子字符串连接在一起。
使用字符串,我们可以确定每个字符出现的次数。之后,如果所有可用的频率都能被k整除,那么就有可能,我们可以输出任何可能的答案。否则不可能。
上述示例的C++实现如下 -
#include
#include
using namespace std;
string solve(string s, int k) {
map mp;
for (char ch : s) {
mp[ch]++;
}
string repeatedSubstring = "";
for (auto &val : mp) {
if ((val.second % k) != 0) {
return "Impossible";
}
else {
for (int i=0;i