java - Longest Duplicated String -


hi have write program searches longest duplicated sub-string in inputted string following method string inputted main program. can point out errors please keep in simple words understand more thank you.

class metod{     string find (string input)     {         int a,n;         int y = 0;         string dupsub = "";         int x = input.length();         system.out.println(x);           do{             = input.indexof(" ");             if(a <0){                 system.out.println(input);             }             while(!(a == 0)){                 string sub = input.substring(y,a);                 string rest = input.substring(a+1,x);                 n = rest.indexof(sub);                 if(n==0){                     find(rest);                 }                 else{                     dupsub = sub;                     input = rest;                     x = rest.length();                 }             }          }while(!(a ==0));          return dupsub;     } 

john, might consider using more modular approach; find helps me organize thoughts.

you might have method following:

public string findlongestduplicatedsubstring(string text) {     list<string> substrings = findallsubstrings(text);     list<string> duplicatedsubstrings = findduplicated(substrings);     string longest = findlongest(duplicatedsubstrings);      return longest; } 

i realize homework, avoid filling in methods 1 calls. however, advocate of test-driven development, i'd suggest consider using junit test confirm each of these smaller methods. approach might isolate issues might have. here start test methods:

@test public void testfindlongestduplicatedsubstring() {     assertequals("ab", findlongestduplicatedsubstring("abcab")); }  @test public void testfindduplicated() {     list<string> substrings = new arraylist<string>();     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<string> substrings = new arraylist<string>();     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<string> strings = new arraylist<string>();     strings.add("a");     strings.add("b");     strings.add("ab");      assertequals("ab", findlongest(strings)); } 

Comments