Esempio:Finding distanza minima tra le parole in un array
WordDistanceFinder finder = new WordDistanceFinder (Arrays.asList ("il", "veloce", "marrone", "volpe", "rapida"));
assert (finder.distance ("fox", "the") == 3);
assert (finder.distance ("quick", "fox") == 1);
Ho la seguente soluzione, che sembra essere O (n), ma non sono sicuro che esista una soluzione migliore. Qualcuno ha qualche idea?
String targetString = "fox";
String targetString2 = "the";
double minDistance = Double.POSITIVE_INFINITY;
for(int x = 0; x < strings.length; x++){
if(strings[x].equals(targetString)){
for(int y = x; y < strings.length; y++){
if(strings[y].equals(targetString2))
if(minDistance > (y - x))
minDistance = y - x;
}
for(int y = x; y >=0; y--){
if(strings[y].equals(targetString2))
if(minDistance > (x - y))
minDistance = x - y;
}
}
}
Tale soluzione è O (n^2) - si è annidato 'for' loop. E sì, questo può essere fatto in O (n), ma sono abbastanza sicuro che questo è compito a casa, quindi è tutto ciò che dirò per ora. –
È una domanda di intervista. –