import java.util.List; public interface Superstring { public String shortest(List strings); /* * Deze methode geeft de lengte l terug van de maximale overlap van str1 en str2, * d.w.z. waarvoor de laatste l karakters (suffix) van str1 overeenkomen met de * eerste l karakters (prefix) van str2. De lengte l is altijd >= 0 en <= de lengte * van zowel str1 als str2. Indien er geen overlap is, is l = 0. * * Voorbeelden: * * overlap("taart", "aartsvijand") = 4 (-aart = aart-) * overlap("hoera", "appel") = 1 (-a = a-) * overlap("appel", "appelboom") = 5 (appel is zelf een prefix van appelboom) * overlap("abcde", "fgh") = 0 (geen suffix-prefix overlap) * */ static int overlap(String str1, String str2){ // start met suffix van str1 die net zo lang is als str2 int i = str1.length() - str2.length(); // als str2 langer is dan str1, starten we met index 0 if(i < 0){ i = 0; } // kort suffix-prefix paar in zolang er geen match gevonden werd boolean match = false; while(!match && i <= str1.length()){ String suffix = str1.substring(i); String prefix = str2.substring(0, suffix.length()); if(suffix.equals(prefix)) { // match gevonden match = true; } else { // geen match, we zoeken verder i++; } } return str1.length() - i; } }