关于两个二进制数最大匹配的问题
各位好,我有两个二进制数:a和b(a,b的长度不一定相等,假设a> =b);现在想得到a和b里面连续相等最长的位串,所以想问问大家有没有效率比较高的算法? 
 我想最基本的算法是这样: 
             1.从a里面取出b个长度的位串,假设为a1,这样a1和b的长度相等, 
             2.将a1和b进行异或操作得到c,然后记录c里面0最多的位串; 
             3.回到第一步,该循环进行(a-b+1)次。 
 请问各位有没有更高效的算法?非常感谢。 
------解决方案--------------------最大子串匹配/** 
  *  
  */ 
 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); 
 			} 
 		} 
 	}   
 }    
 给你个例子参考~~