题解 | #最长公共子串#
最长公共子串
https://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* longest common substring
* @param str1 string字符串 the string
* @param str2 string字符串 the string
* @return string字符串
*/
public String LCS (String str1, String str2) {
// write code here
if (str1 == null || str2 == null) {
return "";
}
int i = str1.length();
int j = str2.length();
int max = 0;
// 临时大小
int tmp = 0;
String maxStr = "";
StringBuilder tmpStr = new StringBuilder();
for (int k = 0; k < i; k++) {
int tmpK = k;
int tmph = 0;
boolean haveSame = false;
for( int h = 0; h<j; h++) {
char hK = str2.charAt(h);
if(str1.charAt(tmpK) == hK) {
tmp ++;
tmpStr.append(str1.charAt(tmpK));
if(tmp >= max) {
max =tmp;
maxStr = tmpStr.toString();
}
tmpK++;
if(tmpK>=i ) {
break;
}
if(!haveSame) {
tmph = h;
}
haveSame = true;
}else {
tmp = 0;
if(tmpStr.length() > 0) {
tmpStr = new StringBuilder();
}
tmpK = k;
if(haveSame) {
h = tmph;
haveSame = false;
}
}
}
tmp =0;
tmpStr = new StringBuilder();
}
return maxStr;
}
}

