Java 查找最小长度为2个字符的所有公共子字符串

Java 查找最小长度为2个字符的所有公共子字符串,java,algorithm,Java,Algorithm,任务内容: 查找所有(从最长、最短结尾开始)最小长度为2个字符的公共子字符串,这些子字符串与以前找到的子字符串不重叠 我的任务是重做下面的代码或编写新的代码。我甚至不知道如何开始:/ publicstaticvoidmain(字符串[]args){ 字符串text1=“AABABB”; 字符串text2=“BAABAB”; int len1=text1.length(); int len2=text2.length(); int max=0; int位置_w1=-1; int位置_w2=-1;

任务内容:

查找所有(从最长、最短结尾开始)最小长度为2个字符的公共子字符串,这些子字符串与以前找到的子字符串不重叠

我的任务是重做下面的代码或编写新的代码。我甚至不知道如何开始:/

publicstaticvoidmain(字符串[]args){
字符串text1=“AABABB”;
字符串text2=“BAABAB”;
int len1=text1.length();
int len2=text2.length();
int max=0;
int位置_w1=-1;
int位置_w2=-1;
对于(int i=0;i=0;k--)
{
int计数器=0;
int limit=Math.min(len2,(len1-i+k));
对于(int j=k;j
也许可以尝试以下方法:

publicstaticvoidmain(字符串[]args){
字符串text1=“AABABB”;
字符串text2=“BAABAB”;
int maxLen=3;
for(int len=2;lentoCheck)
返回true;
返回false;
}

*请注意,我没有检查它是否正常工作,因为这是家庭作业,只是一些心理帮助

立即跳入for-i-like循环很难阅读和/或更改

想想自己将如何完成这项任务,看看原作者做了什么

从最大子序列开始,将是:

int max = Math.min(len1, len2);
...
--max;
甚至

for (int max = Math.min(len1, len2); may > 0; --max) {
    for (int i = 0; i + max <= len1; ++i) {
         if (match found) {
             print match;
             i += max - 1;
         }
    }
}

不幸的是,它进入了无穷大:/What to infinity?我编辑了重叠法,它有点难看,但我认为在询问家庭作业时它应该起作用(1)了解你的学校政策:在这里寻求帮助可能构成作弊。(2)指定问题是家庭作业。(3)首先,真诚地尝试自己解决问题(在问题中包含代码)。(4)询问您现有实现中的具体问题;请参阅。此外,是关于家庭作业问题的指导。“有人能帮我吗?”不是有效的SO问题]()。这通常意味着你需要的是与当地导师共度时光或是浏览教程,而不是堆积如山。“我甚至不知道如何开始”属于此类别。StackOverflow不是设计、编码、研究或教程资源。请阅读并遵循帮助文档中的发布指南,如您创建此帐户时所建议的。然后…在此处应用。
         int notEarlierPos = text1.indexOf(text1.subtring(i, i + max));
         if (notEarlierPos == i) { // Not already treated earlier.
             int matchPos = text2.indexOf(text1.subtring(i, i + max));
             if (matchPos != -1) {
                 print match;
                 i += max - 1;
             }
         }