public class Esercizio3_4 { static public boolean stessiElementi(int[] a, int[] b) { // Le variabili ia e ib sono indici all'elemento di a e di b sotto osservazione. int ia = 0; int ib = 0; while (ia < a.length && ib < b.length) { // Il ciclo che segue serve ad avanzare nell'array a ignorando tutti i duplicati. // Finché l'elemento successivo a quello corrent a[ia+1] è uguale a quello corrente // (a[ia]) // vado avanti. while (ia < a.length - 1 && a[ia] == a[ia + 1]) ia += 1; // Stessa cosa per l'array b. while (ib < b.length - 1 && b[ib] == b[ib + 1]) ib += 1; // Ora che ho saltato i duplicati, controllo che gli elementi correnti in a e b siano // uguali. if (a[ia] == b[ib]) { ia += 1; ib += 1; } else return false; } // Arrivati a questo punto, se ho terminato di guardare entrambi gli array (sia ia che ib // sono uguali alla lunghezza dell'array), vuole dire che a e b sono uguali a meno di // duplicati. Altrimenti, se uno dei due ha ulteriori elementi, vuol dire che non sono // uguali. return (ia == a.length && ib == b.length); } }