• Non ci sono risultati.

Alcune soluzioni relative ad una versione della prova intermedia del 10 Novembre 2006 (a.a. 2006-07)

N/A
N/A
Protected

Academic year: 2021

Condividi "Alcune soluzioni relative ad una versione della prova intermedia del 10 Novembre 2006 (a.a. 2006-07)"

Copied!
2
0
0

Testo completo

(1)

Alcune soluzioni relative ad una versione della prova intermedia del 10 Novembre 2006 (a.a. 2006-07)

Esercizio 3. Scrivere un metodo che, date due stringhe s1 ed s2 ed un intero k (k>0), restituisce true se nella stringa s1 esistono almeno k sottostringhe uguali ad s2, altrimenti il metodo restituisce false. Ad esempio, dati s1 = "aabbbcbbadvbbc", s2 = "bb" e k=4, il metodo restituisce true.

public static boolean substringSearch (String s1, String s2, int k) { if (k <= 0)

return false;

int l2 = s2.length(), c = 0;

for (int i=0; i <= s1.length()-l2; i++) { if (s2.equals(s1.substring(i,i+l2))) {

c++;

if (c >= k) return true;

} }

return false;

}

Esercizio 4. Scrivere un metodo che, dati due array monodimensionali di interi a e b ordinati in senso non crescente (ovvero, a[0] ≥ a[1] ≥ a[2] . . . e b[0] ≥ b[1] ≥ b[2] . . .), restituisce un array monodimensionale di interi c che contiene gli elementi di a e b (eventualmente con ripetizioni di elementi) ordinati in senso non crescente.

Ad esempio, se a = {5,2,-1,-4,-10,-21} e b = {7,2,-3,-4,-7}, il metodo restituisce l’array c = {7,5,2,2,-1,-3,-4,-4,-7,-10,-21}.

public static int[] mergeNC (int[] a, int[] b) { int[] c = new int[a.length + b.length];

int i = 0, j = 0, k = 0;

while (i < a.length && j < b.length) { if (a[i] > b[j]) {

c[k] = a[i];

i++;

} else {

c[k] = b[j];

j++;

} k++;

}

if (i >= a.length) { while (j < b.length) {

c[k] = b[j];

k++;

j++;

} }

1

(2)

else {

while (i < a.length) { c[k] = a[i];

k++;

i++;

} }

return c;

}

Esercizio 5. Scrivere un metodo che, dato un array bidimensionale di stringhe a, restituisce un array monodimensionale di stringhe b tale che l’elemento b[i] `e la prima stringa nell’array a[i] di lunghezza massima in a[i]. Ad esempio, dato a = {{"ad","c","abc","ab","bbc"}, {"ckk","bc","rew","mghgh"}, {"argh","xxc","beta"}}, il metodo restituisce l’array b dato da {"abc","mghgh","argh"}.

(Si assuma che ogni riga a[i] contenga almeno una stringa.) public static String[] maxLenFirst (String[][] a) {

String[] b = new String[a.length];

for (int i=0; i<a.length; i++) { String s = a[i][0];

for (int j=1; j<a[i].length; j++) { if (a[i][j].length() > s.length()) {

s = a[i][j];

} }

b[i] = s;

}

return b;

}

2

Riferimenti

Documenti correlati

Un punto materiale P di massa m scorre senza attrito su una guida.. rettilinea formante un angolo con l'orizzontale ed  e collegato,

Scrivi in modo ordinato e motiva ogni risposta.. Durata della prova: 2 ore e

[r]

La presentazione della tesi di un laureando davanti ad una commissione di laurea pu`o essere descritta tramite il nome e la matricola del laureando, il titolo della tesi, il nome

La sessione di una conferenza pu`o essere caratterizzata dal nome della con- ferenza, dal numero di sessione, dal nome del coordinatore della sessione e dall’elenco delle

Scrivere un metodo che, dati un array di interi a (contenente almeno due elementi), un intero v ed un intero k (k&gt;0), restituisce true se in a esistono almeno k coppie di interi,

Scrivere un metodo che, date due stringhe s1 ed s2 ed un intero k (k&gt;0), restituisce true se nella stringa s1 esistono almeno k sottostringhe uguali ad s2, altrimenti il

Scrivere un metodo che, dati un array bidimensionale di stringhe a ed un intero k &gt; 0, restituisce true se in ogni riga a[i] di a esistono almeno k coppie di stringhe adiacenti