如何找到字符串可能具有的对的最大值?

How to find the maximum value of pairs a string could have?

给你两个s:N和K。伦狗对满足以下条件的字符串感兴趣:

一串 N 个字符的 K 的最大值是多少?

我们可以假设 'A' 在 'B' 之前,因为在每个解决方案中我们都可以将 'A' 重新排序到字符串的开头并获得相同或更大数量的对.例如 'BAA' 没有对,'ABA' 有一对,'AAB' 有两对。

如果开头有 a Ab B 那么我们有 K = a * b 对。因此,鉴于 a + b = N,我们需要优化 K = a * b

如果 N 是偶数,那么我们有:

a = b = N / 2, K = N * N / 4

如果 N 是奇数,我们有:

a = (N - 1) / 2, b = (N + 1) / 2, K = (N * N - 1) / 4

这个看起来怎么样?

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('');
}