marczxc
03-02-2010, 14:54
Ciao a tutti. Io ho questo semplice programma che in un array di caratteri trova la sequenza più lunga
public class Sequenza{
public static void main(String[] args){
char[] array ={'a','b','c','c','f','f','z','z','z','z','b','b','b','b','b'};
System.out.println("Array: ");
for(int i=0;i<array.length;i++)
System.out.print(array[i]+" ");
System.out.println();
cercaChar(array);
}
public static void cercaChar(char[] a){
int n=a.length;
int cmax=1,cont=1;
char c=a[0],com=a[0];
for(int i=1;i<n;i++){
if(a[i]==com && i!=a.length-1) cont++;
else if(a[i]==com && i==a.length-1) { //nel caso fossi arrivato alla fine dell'array, così posso memorizzare l'ultima sequenza
cont++;
if(cont>cmax){
cmax=cont;
c=com;
}
}
else{
if(cont>cmax){
cmax=cont;
c=com;
}
com=a[i];
cont=1;
} // fine else
} //fine for
System.out.println("Lettera della sequenza piu' lunga: "+c);
System.out.println("Lunghezza sequenza: "+cmax);
}
}
del metodo cercaChar devo fare un'altra versione che mi restituisce sia il carattere della sequenza più lunga sia quanto è lunga la sequenza. come posso fare?
public class Sequenza{
public static void main(String[] args){
char[] array ={'a','b','c','c','f','f','z','z','z','z','b','b','b','b','b'};
System.out.println("Array: ");
for(int i=0;i<array.length;i++)
System.out.print(array[i]+" ");
System.out.println();
cercaChar(array);
}
public static void cercaChar(char[] a){
int n=a.length;
int cmax=1,cont=1;
char c=a[0],com=a[0];
for(int i=1;i<n;i++){
if(a[i]==com && i!=a.length-1) cont++;
else if(a[i]==com && i==a.length-1) { //nel caso fossi arrivato alla fine dell'array, così posso memorizzare l'ultima sequenza
cont++;
if(cont>cmax){
cmax=cont;
c=com;
}
}
else{
if(cont>cmax){
cmax=cont;
c=com;
}
com=a[i];
cont=1;
} // fine else
} //fine for
System.out.println("Lettera della sequenza piu' lunga: "+c);
System.out.println("Lunghezza sequenza: "+cmax);
}
}
del metodo cercaChar devo fare un'altra versione che mi restituisce sia il carattere della sequenza più lunga sia quanto è lunga la sequenza. come posso fare?