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
Post a Comment