重新排列字符串k距离 - 证明

时间:2016-11-17 06:38:12

标签: greedy proof

问题: 给定长度为l且为整数k的非空字符串str,重新排列 字符串使得相同的字符至少距离k 彼此。万一,你不可能用长度l来做 可以插入空格并返回最小空的排列 空格。

E.x。 str =“aabbcc”,k = 3

结果:“abcabc”

贪婪的想法是:

1)按频率对字符进行排序,并采用最高频率 第一名的角色。采取下一个可用的最高频率 第二名的角色等......

E.x。对于“aabbcc”,k = 3 (字符,频率) (a2) (B,2) (C,2)

选择一个。然后选择b,然后选择c,选择a,选择b,选择c

我们如何证明这一点?

1 个答案:

答案 0 :(得分:0)

我们可以想到当我们无法选择任何字符时的情况,那就是当字符的种类少于k但我们仍然拥有频率高于1的字符时。避免这种情况的最佳方法是显然总是选择频率最高的字符。