Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>John, you might consider using a more modular approach; I find this helps me organize my thoughts.</p> <p>You might have a method like the following:</p> <pre><code>public String findLongestDuplicatedSubstring(String text) { List&lt;String&gt; substrings = findAllSubstrings(text); List&lt;String&gt; duplicatedSubstrings = findDuplicated(substrings); String longest = findLongest(duplicatedSubstrings); return longest; } </code></pre> <p>I realize this is homework, so I will avoid filling in the methods this one calls. However, as an advocate of test-driven development, I'd suggest you consider using a JUnit test to help you confirm each of these smaller methods. This approach might help you isolate any issues you might have. Here is a start for some test methods:</p> <pre><code>@Test public void testFindLongestDuplicatedSubstring() { assertEquals("ab", findLongestDuplicatedSubstring("abcab")); } @Test public void testFindDuplicated() { List&lt;String&gt; substrings = new ArrayList&lt;String&gt;(); substrings.add("a"); substrings.add("ab"); substrings.add("abc"); substrings.add("abca"); substrings.add("abcab"); substrings.add("b"); substrings.add("bc"); substrings.add("bca"); substrings.add("bcab"); substrings.add("c"); substrings.add("ca"); substrings.add("cab"); substrings.add("a"); substrings.add("ab"); substrings.add("b"); assertEquals(3, findDuplicated(substrings).size()); } @Test public void testFindAllSubstrings() { List&lt;String&gt; substrings = new ArrayList&lt;String&gt;(); substrings.add("a"); substrings.add("ab"); substrings.add("abc"); substrings.add("abca"); substrings.add("abcab"); substrings.add("b"); substrings.add("bc"); substrings.add("bca"); substrings.add("bcab"); substrings.add("c"); substrings.add("ca"); substrings.add("cab"); substrings.add("a"); substrings.add("ab"); substrings.add("b"); assertEquals(substrings, findAllSubstrings("abcab")); } @Test public void testFindLongest() { List&lt;String&gt; strings = new ArrayList&lt;String&gt;(); strings.add("a"); strings.add("b"); strings.add("ab"); assertEquals("ab", findLongest(strings)); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload