Fir*_*exo 8 algorithm dynamic-programming
来自Codechef:
当且仅当所有字符在其中出现相同的次数时,才认为字符串是平衡的.
给你一个字符串
S; 此字符串可能只包含大写英文字母.您可以多次执行以下操作(包括零):选择一个字母S并用另一个大写英文字母替换它.请注意,即使被替换的字母S多次出现,也只会替换此字母的所选出现.找到将给定字符串转换为平衡字符串所需的最少操作数.
例:
输入:
ABCB在这里,我们可以替换
C为ATO GET:,ABAB其中字符串的每个字符出现2次.所以,最小操作次数=
1.
如何使弦好?
我可以应用动态编程吗?
rua*_*akh 14
我认为你真的不需要动态编程.
O(长度(S))时间的一种方法:
ABCB示例,那将是A->1 B->2 C->1 D->0 E->0 ... Z->0,我们可以表示为数组[1, 2, 1, 0, 0, ..., 0].
ABCB和之间没有真正的区别ABBC,因为每个都可以C用一个替换它们来平衡A.[0, 0, ..., 0, 1, 1, 2].
ABCB和之间没有真正的区别ABDB,因为可以通过用另一个单个字母替换它们中的一个来平衡每一个.