n 文字列の最も長い共通部分文字列を見つけて、その結果をプロジェクトで使用する必要があります。
すでにこれを行っているJavaの既存の実装/ライブラリはありますか?
n 文字列の最も長い共通部分文字列を見つけて、その結果をプロジェクトで使用する必要があります。
すでにこれを行っているJavaの既存の実装/ライブラリはありますか?
以下のコードを使用して、n 文字列の最長共通部分文字列を識別できます。
public static String identifyCommonSubStrOfNStr(String [] strArr){
String commonStr="";
String smallStr ="";
//identify smallest String
for (String s :strArr) {
if(smallStr.length()< s.length()){
smallStr=s;
}
}
String tempCom="";
char [] smallStrChars=smallStr.toCharArray();
for (char c: smallStrChars){
tempCom+= c;
for (String s :strArr){
if(!s.contains(tempCom)){
tempCom=c;
for (String s :strAarr){
if(!s.contains(tempCom)){
tempCom="";
break;
}
}
break;
}
}
if(tempCom!="" && tempCom.length()>commonStr.length()){
commonStr=tempCom;
}
}
return commonStr;
}
このページは、かなりの数の言語で必要なものをほぼ正確に提供します.
public static int longestSubstr(String first, String second) {
if (first == null || second == null || first.length() == 0 || second.length() == 0) {
return 0;
}
int maxLen = 0;
int fl = first.length();
int sl = second.length();
int[][] table = new int[fl][sl];
for (int i = 0; i < fl; i++) {
for (int j = 0; j < sl; j++) {
if (first.charAt(i) == second.charAt(j)) {
if (i == 0 || j == 0) {
table[i][j] = 1;
}
else {
table[i][j] = table[i - 1][j - 1] + 1;
}
if (table[i][j] > maxLen) {
maxLen = table[i][j];
}
}
}
}
return maxLen;
}
ウィキペディアのバージョン ( http://en.wikipedia.org/wiki/Longest_common_substring_problem ) を、すべての文字列を反復処理するループに入れて n 文字列に拡張することができます。