最大子串匹配
/**
*
*/
package com.daniel.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;
/**
* @author Dianel Cao
* @date 2007-4-10
* @time 下午05:29:42
*
*/
public class StringPattern {
/**
* @param args
*/
public static void main(String[] args) {
getMaxPattern("CABA","AABCABAC");
}
public static void getMaxPattern(String strA, String strB) {
//只要有一个null,就返回null
if (strA == null || strB == null || strA.trim().equals("") ||strB.trim().equals("")){
System.out.println("");
return;
}
int lengthA = strA.length();
int lengthB = strB.length();
String longStr = lengthA > lengthB ? strA : strB;
String shortStr = lengthA > lengthB ? strB : strA;
Map<Integer,List<String>> maxSubstrList = new TreeMap<Integer,List<String>>();
for (int length = shortStr.length(); length > 0; length--) {
for (int startIndex = 0; startIndex <= shortStr.length() - length; startIndex++) {
String substr = shortStr.substring(startIndex, startIndex + length);
if (longStr.indexOf(substr) > -1) {
int len = substr.length();
List<String> list;
if (maxSubstrList.containsKey(len)){
list = (List<String>)maxSubstrList.get(len);
}else{
list = new ArrayList<String>();
}
if (!list.contains(substr)){
list.add(substr);
}
maxSubstrList.put(len, list);
}
}
}
// 找到最大匹配子串
if (maxSubstrList.size() == 0){
return;
}else{
Iterator<Entry<Integer,List<String>>> it = maxSubstrList.entrySet().iterator();
Entry<Integer,List<String>> entry = it.next();
while (it.hasNext()){
entry = it.next();
}
List<String> maxList = entry.getValue();
for(String str:maxList){
System.out.println(str);
}
}
}
}