[Risolto] [Java] Verificare che una stringa sia l'anagramma

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
angelo.digiacomantonio
Prode Principiante
Messaggi: 67
Iscrizione: sabato 15 ottobre 2011, 13:07
Località: Città Sant'Angelo

[Risolto] [Java] Verificare che una stringa sia l'anagramma

Messaggio da angelo.digiacomantonio »

Ciao ragazzi,
devo creare un metodo booleano che, prese due stringhe come parametri, mi verifichi se l'una è l'anagramma dell'altra (restituendo true, se si, altrimenti false); per ora sono solo riuscito a metter su un ragionamento: se, per esempio "attore" è anagramma di "teatro", allora le due stringhe devono avere:
1) la stessa lunghezza
2) le stesse lettere (per esempio una "a", due "t" ecc...)

Per il controllo preventivo sulla lunghezza ci siamo, ma per verificare se le due stringhe hanno le stesse lettere come potrei fare? Avevo pensato a due for annidati per ogni stringa, i quali tenessero il conto di ogni singola lettera, memorizzandola in una variabile "contatore" per ognuna; però mi sembra un po "goffa" come soluzione...qualcuno ha qualche altra idea?
Grazie a tutti :)
Ultima modifica di angelo.digiacomantonio il giovedì 15 dicembre 2011, 20:48, modificato 1 volta in totale.
"Il vantaggio di essere intelligenti è che ci si può comunque comportare da cretini, mentre per questi ultimi, fare il contrario è impossibile."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Verificare che una stringa sia l'anagramma dell'a

Messaggio da Zoff »

Basta un solo ciclo.

Se fai il ciclo sulla variabile i allora ti basta controllare string.charAt(i) e string.charAt(string.length-i-1) fino a quando

Codice: Seleziona tutto

i<string.length-i-1
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
angelo.digiacomantonio
Prode Principiante
Messaggi: 67
Iscrizione: sabato 15 ottobre 2011, 13:07
Località: Città Sant'Angelo

Re: [Java] Verificare che una stringa sia l'anagramma dell'a

Messaggio da angelo.digiacomantonio »

Codice: Seleziona tutto

string.charAt(string.length-i-1)
a che carattere si riferisce?
"Il vantaggio di essere intelligenti è che ci si può comunque comportare da cretini, mentre per questi ultimi, fare il contrario è impossibile."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da Zoff »

all' i-esimo carattere da destra
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
angelo.digiacomantonio
Prode Principiante
Messaggi: 67
Iscrizione: sabato 15 ottobre 2011, 13:07
Località: Città Sant'Angelo

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da angelo.digiacomantonio »

okok...però, facendo così, dov'è il controllo sui caratteri? la mia idea è che, per esempio nella parola "attore", per la lettera "a" mi scorro tutta la stringa "teatro", contando quante volte essa compare (stessa cosa per la lettera "t", "o" ecc...)
"Il vantaggio di essere intelligenti è che ci si può comunque comportare da cretini, mentre per questi ultimi, fare il contrario è impossibile."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da Zoff »

Scusami ho pensato ai palindromi non agli anagrammi, sono un po' fuso stasera.

Ordina le lettere di entrambe le parole alfabeticamente e usa equals()

Per una cosa piu' semplice usa toCharArray() per ottener eun array delle lettere che è piu' facile da ordinare che non una stringa.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
angelo.digiacomantonio
Prode Principiante
Messaggi: 67
Iscrizione: sabato 15 ottobre 2011, 13:07
Località: Città Sant'Angelo

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da angelo.digiacomantonio »

Ottima idea, non ci avevo pensato :) ...scusami ma non ricorso una cosa...per ordinare una stringa alfabeticamente c'era un metodo apposito o devo fare da me?
"Il vantaggio di essere intelligenti è che ci si può comunque comportare da cretini, mentre per questi ultimi, fare il contrario è impossibile."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da Zoff »

Per le stringhe no, per gli Array invece c'è.

Ma penso sia piu' istruttivo se lo fai da te.

EDIT: Lol ho pure fatto la rima.
Ultima modifica di Zoff il giovedì 15 dicembre 2011, 20:27, modificato 1 volta in totale.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
angelo.digiacomantonio
Prode Principiante
Messaggi: 67
Iscrizione: sabato 15 ottobre 2011, 13:07
Località: Città Sant'Angelo

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da angelo.digiacomantonio »

hahaha grandissimo :) ...comunque, mentre mi stavo arrovellando il cervello per cercare di ricordare come si oridnasse un array (l'ho fatto migliaia di volte alle superiori ma non mi ricordavo nulla ???), mi è venuto un lampo di genio ed ho fatto questa roba qui:

Codice: Seleziona tutto

static boolean isAnagramma(String str, String par){
for(int i=0; i<str.length(); i++){
	int conta=0;
	int count=0;
	for(int j=0; j<str.length(); j++){
		if(str.charAt(i)==str.charAt(j)){
			conta++;
		}
		if(str.charAt(i)==par.charAt(j)){
			count++;
		}
	}
	if(conta!=count){return false;}
}
return true;
}
ho provato con due coppie di anagrammi e due di non anagrammi e funziona...cosa ne pensi?
"Il vantaggio di essere intelligenti è che ci si può comunque comportare da cretini, mentre per questi ultimi, fare il contrario è impossibile."
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da Zoff »

In pratica per ogni lettera conti in entrambe le stringhe quante volte appare e confronti il numero di occorrenze.

Direi che torna.

Ricordati però di controllare le lunghezze altrimenti se, ad esempio, richiami isAnagramma("roma","aromi"); ottieni true.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
angelo.digiacomantonio
Prode Principiante
Messaggi: 67
Iscrizione: sabato 15 ottobre 2011, 13:07
Località: Città Sant'Angelo

Re: [Java] Verificare che una stringa sia l'anagramma dell'altra

Messaggio da angelo.digiacomantonio »

Bene :) sisi ora aggiungo anche il controllo della lunghezza...l'avevo tralasciato un attimo per concentrarmi sul punto cruciale del problema; grazie mille per l'attenzione Zoff :) metto [Risolto] :)
"Il vantaggio di essere intelligenti è che ci si può comunque comportare da cretini, mentre per questi ultimi, fare il contrario è impossibile."
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: rai e 2 ospiti