【发布时间】:2013-04-01 05:48:06
【问题描述】:
给定 2 个字符串 A 和 B,您必须通过两个操作将 A 转换为 B:
-
delete(i, len):删除从i到A开始的len字符(可以不删除字符) -
insert(i, str):在Ai-th 索引处插入字符串str(可以插入空字符串)
你必须尽量减少删除操作删除的字符数。
约束:
- insert 只能在删除后应用
- 删除和插入只能应用一次
示例 1:
A = aabcdef
B = aaefg
回答:delete(2, 3); insert(4, "g")。总而言之,3个字符被删除,这是我们能做的最好的。
示例2:
A = aaaaa
B = a
我们只需要删除4个字符
我想到了O(n^3) 和O(n^2) 的解决方案,但有人告诉我有比这更好的解决方案。
【问题讨论】:
-
也许已经晚了,但我对要求感到困惑。如果主要性能特征是
O(n),其中n是操作数,是不是总是有O(1)的解决方案:删除整个字符串A,然后插入整个字符串B? -
@angelatlarge 你必须尽量减少删除的字符数
标签: string algorithm optimization data-structures