最长公共字串 记录最长字串的结果
2015-08-31 06:51
357 查看
沿着结果网斜上方打印然后逆序就可以。
代码:
代码:
package codes; public class LongestCommonSubMemo { public static void main(String[] args) { String res = new LongestCommonSubMemo().lonestCommonSub("tofooodie", "toooday"); //int max = new LongestCommonSub().Max(res); System.out.println(res); //System.out.println(new LongestCommonSub().recursiveCommonLongestsSub("tofoodie", "tooday")); } //不带 最长记录的 public String lonestCommonSub( String str1, String str2){ String longestSub =""; int [][] res = new int [str1.length()][str2.length()]; //初始化第一行,第一列 for( int i=0;i<str1.length();i++){ if(str1.charAt(i) == str2.charAt(0)){ res[i][0] = 1; } } for( int i=0;i<str2.length();i++){ if(str1.charAt(0) == str2.charAt(i)){ res[0][i] = 1; } } for( int i = 1 ;i< str1.length();i++){ for(int j = 1; j< str2.length();j++){ if( str1.charAt(i) == str2.charAt(j)){ res[i][j] = res[i-1][j-1]+1; } } } //print array for( int i=0;i< res.length;i++){ for( int j =0; j< res[0].length ; j++){ System.out.print(res[i][j]+" "); } System.out.println(); } // 已经获得res int max = 0; int row = 0; int col = 0; for(int i = 0;i<res.length;i++){ for(int j = 0;j<res[0].length;j++){ if(res[i][j]> max){ max = res[i][j]; row = i; col = j; } } } while( row>0 && col>0){ longestSub += str1.charAt(row); row--; col--; } StringBuffer sb = new StringBuffer(longestSub); longestSub = sb.reverse().toString(); return longestSub; } }
相关文章推荐
- 何时需要对时间序列进行Log Transformation
- C语言的错误处理
- 软件架构
- mybatis
- 最长公共字串 动规实现
- huxb23@126的博客
- 项目管理大法归档 - 思维导图、原型工具、接口测试、设计模式、版本管理、单元测试、持续集成、代码审查、Bug 跟踪
- mogodb
- redis 学习笔记
- c++学习笔记2
- Tomcat's Java Servlet Examples Explained
- Java基础、面向对象
- 精度为p的float sqrt
- ubuntu忘记登录账户以及密码
- Leetcode #217 Contains Duplicate
- *Count Complete Tree Nodes
- 黑马程序员——Java基础---正则表达式
- js Date 日期格式化(转)
- android 布局背景模糊化处理
- sublime text 之snippet功能的使用