求字符串的最大字串

来源:互联网 发布:丧尸围城2帧数优化补丁 编辑:程序博客网 时间:2024/05/16 15:37
package org.pzhu.javase;/* * 求最大字符串字串 * */public class MaxSubString {public static void main(String[] args) {MaxSubString mss = new MaxSubString();String result = mss.getMaxSubString("1a76cd5b369e", "xcdl5b369mn");System.out.println(result);}public String getMaxSubString(String str1, String str2) {char[] str1CharArray = str1.toCharArray();char[] str2CharArray = str2.toCharArray();int[][] map = new int[str2CharArray.length][str1CharArray.length];System.out.print("   ");for (int i = 0; i < str1CharArray.length; i++) {System.out.print(str1CharArray[i] + "  ");}System.out.println();for (int i = 0; i < map.length; i++) {System.out.print(str2CharArray[i] + "  ");for (int j = 0; j < map[i].length; j++) {if (str1CharArray[j] == str2CharArray[i]) {if (i == 0 || j == 0) {map[i][j] = 1;} else {map[i][j] = map[i - 1][j - 1] + 1;}}System.out.print(map[i][j] + "  ");}System.out.println();}int maxI = 0, maxJ = 0;for (int i = 0; i < map.length; i++) {for (int j = 0; j < map[i].length; j++) {if (map[i][j] > map[maxI][maxJ]) {maxI = i;maxJ = j;}}}StringBuffer strBuf = new StringBuffer();if (map[maxI][maxJ] != 0) {while (maxI>=0&&maxJ>=0&&map[maxI][maxJ] > 0) {strBuf.insert(0, str1CharArray[maxJ]);maxI--;maxJ--;}}return strBuf.toString();}}