题目:给定一个字符串,寻找这个串中的最长回文子串。本篇经验将分享两个算法,一个是暴力寻找算法,时间复杂度为 O(n³), 一个是动态规划算法,时间复杂度为 O(n²)。
工具/原料
1
Eclipse
2
JDK1.8
方法/步骤
1
暴力寻找算法:定义一个判断回文串的方法 图示,定义一个方法,用于判断参数字符串是否是回文串。
2
暴力寻找算法:遍历所有子串,逐个判断子串是否是回文串图示,通过双层嵌套循环,遍历参数字符串的每一个子串,并调用上一步骤定义的方法判断是否是回文串。
3
动态规划算法图示,动态规划算法的核心思想是,将原始字符串反转,通过双层嵌套循环获取相同子串,并判断这个子串是否是回文串。
4
性能对比测试:构建测试数据图示,构建50个长度为1000的字符串
6
性能对比测试:10次测试结果汇总图示,通过多次运行取平均耗时,暴力寻找算法的耗时大概是动态规划算法的30倍左右。
注意事项
对于一个算法题目,不仅要考虑算法的实现难易,也需要考虑算法的执行效率,好的算法可以让执行效率提升几十倍甚至上百倍
上一篇:如何将字符串反转