你给了两个s:N和K.Lun狗对满足以下条件的字符串感兴趣:
N个字符串的K的最大值是什么?
答案 0 :(得分:4)
我们可以假设' A'在B'之前,因为在每个解决方案中我们都可以重新排序' A'到字符串的开头并获得相同或更大数量的对。例如' BAA'没有配对,' ABA'有一对和AAB'有两对。
如果我们在开头有a
A
而b
B
则我们有K = a * b
对。因此,我们需要优化K = a * b
给定a + b = N
。
如果N
是偶数,那么我们就有了:
a = b = N / 2,K = N * N / 4
如果N
奇怪,我们有:
a =(N - 1)/ 2,b =(N + 1)/ 2,K =(N * N - 1)/ 4
答案 1 :(得分:0)
这看起来如何?
function createString(N, K) {
const res = Array(N).fill('a');
let i = 1, start = 1, end = N, pairs = 0;
while (pairs < K && start < end) {
res[i - 1] = 'a';
res[i] = 'b';
pairs++;
i++;
if (i === end) {
start++;
end--;
i = start;
}
}
return pairs < K ? '' : res.join('');
}