如果给定 n 个字符串及其长度和一个 add(string s1,string s2) 函数,该函数会将字符串 s2 与 s1 连接起来并返回 s3。我们将如何优化将所有这些字符串连接成一个大字符串的成本。
如果没有给出这样的函数,我们可以简单地创建大小为 (n1 + n2 + ...nn) 的输出字符串,并继续向其附加每个字符串的字符。但是,有了这个函数,我们必须遍历输入字符串 s1 以找到它的结尾,然后开始将字符串 s2 连接到它。
所以如果字符串的长度是 2, 6, 1, 3, 4 ..
add (s1, s2) traversal for length 2, op string of length 8
add (s1, s3) traversal for length (2+6) op string of length 9
add (s1, s4) traversal for length (2+6+1) op string of length 12
add (s1, s5) traversal for length (2+6+1+3) op string of length 16...and so on..