参考资料:
1. 阿里笔试3.20_第二题_三种解题思路总结
题目大意:小明在学旋律,每段旋律都可以用字符串来表示,并且旋律的每个字符的ASCALL码递增的
比如以下4段旋律 : aaa,bcd,bcdef,zzz
现在就是要求,小明能够吧这些旋律拼接起来组成最长的旋律。
比如上述例子输出 11 最长的旋律为 aaabcdefzzz
-
算法1:时间O(n^2),空间O(n)
动态规划:
先将字符串进行排序,dp[i]表示,包含第i个字符串的前i个字符串(中间可能会少掉一些)能组成的最长的字符串长度,从第一个字符串开始遍历,因为第i个是新加入的,要看看新加入跟前面的dp[i-1~0]进行组合看得到哪个dp[i]最大。 -
算法2:时间O(nlogn)
动态规划:
跟上面差不多,但是dp[i]表示,包含第i个字母的字符串作为结尾。代码看了很久没看懂,o(╥﹏╥)o。 -
算法3:
网友评论