素朴に実装。LCS長が何たるかは別のページを参照してください。 LCSのアルゴリズムは、系列Xのi番目をxi、系列Yのj番目をyjとすると、 i = 0 または j = 0 のとき、 LCS(i, j) = 0 i, j > 0 かつ xi == yj のとき、 LCS(i, j) = LCS(i-1, j-1) + 1 i, j > 0 かつ xi != yj のとき、 LCS(i, j) = max(LCS(i-1, j), LCS(i, j-1)) ですが、Javaは配列が0オリジンなので、このまま素直に実装してしまうと系列XとYの一文字目が一致した場合でもLCS長が0になってしまいます。そこでちょっとトリッキーな実装にしてみました。 public class LongestCommonSubsequence { // 実行サンプル public static void main(S