首先呢,我们平时最常见的问题是需要我们求解公共子串中最长的那个子串,那么我们可以根据这个方法来更改:
java中判断一个字符串是否被包含在另一个字符串中很简单,只需要调用String的contains方法即可,那么我们直接遍历短的那个字符串即可
即
public void test(String str,String str1){
String max=str.length()>str1.length()?str:str1;
String min=str.length()<str1.length()?str:str1;
int result=0;
Map<String,Integer> map=new HashMap<String, Integer>();
for(int i=0;i<min.length();i++){
for(int j=i+1;j<min.length()+1;j++){
if(max.contains(min.substring(i,j))&&!map.containsKey(min.substring(i,j))){//判断max中是否包含这个子串以及结果集中是否已经有这个子串
result++;
map.put(min.substring(i,j),0);//将子串加入结果集
}
}
}
System.out.println(map);
System.out.println(result);
}
这样我们就解决了这个求解公共子串的问题