我有一个字符串数组:

qTrees[0] = "023012311312201123123130110332";
qTrees[1] = "023012311130023103123130110332";
qTrees[2] = "023013200020123103123130110333";
qTrees[3] = "023013200202301123123130110333";


使用这个循环,我试图从中检索相似的部分:

String similarPart = "";
    for (int i = 0; i < qTrees[0].length(); i++){
        if (qTrees[0].charAt(i) == qTrees[1].charAt(i) &&
                qTrees[1].charAt(i) == qTrees[2].charAt(i) &&
                qTrees[2].charAt(i) == qTrees[3].charAt(i) ){

            similarPart += qTrees[0].charAt(i);
        } else {
            break;
        }
    }


但这是错误的。如您所见,它将仅返回“ 02301”,但更深的相似性是可能的。

请给我建议一个更好的方法。谢谢。

最佳答案

您需要更好地定义您要实现的目标。你想要_____吗:


查找数组中任何两个条目之间的最长公共起始序列;
查找数组中所有条目的最长公共起始序列;
查找任意两个条目之间的最长公共序列(即,相同位置的相同字符);
查找数组中所有条目的最长公共序列。


所有这些方法都将给出略有不同的方法,但是都可以归结为正确地在循环中使用breakcontinue

08-27 14:38