Ho qualche problema a scrivere una variante della ricerca sotto stringa. In sostanza, l'obiettivo è scrivere un metodo in grado di eseguire la ricerca sotto stringa, tranne per il fatto che i dati di origine si trovano in una matrice di stringhe piuttosto che in una stringa.
Mi sono guardato intorno e non riesco a trovare nessuno che sia riuscito a risolverlo con eleganza.
Considerare alcuni dati di input come:
final List<String> source = new ArrayList<String>();
source.add("abc");
source.add("def");
source.add("ghi");
source.add("jkl");
source.add("mnop");
Ora diciamo che voglio scrivere un metodo che può restituire una coppia della prima posizione in cui appare la stringa di destinazione. Questa coppia rappresenta il primo indice della stringa nell'array di origine in cui appare la destinazione e il suo indice all'interno della stringa in cui inizia la destinazione.
Esempi con indici basati su 0:
subStringArray(source, "def"); //returns Pair(1,0) - 2nd string - 1st index
subStringArray(source, "ef"); //returns Pair(1,1) - 2nd string - 2nd index
subStringArray(source, "fgh"); //returns Pair(1,2) - 2nd string - 3rd index
subStringArray(source, "hijklmno"); //returns Pair(2, 1) - 3rd string - 2nd index
subStringArray(source, "abcf"); //returns null or Pair(-1,-1);
So che implicherebbe tre cicli di loop, ma non sono sicuro di come gestire i casi limite, vale a dire dove la stringa di destinazione occupa più stringhe nell'array sorgente.
Devo notare che non posso allocare più memoria.