| |||
Podrias utilizar el metodo de la clase String indexOf que devuelve la posición donde se encuentra el String o caracter dentro de una cadena de texto y en caso de no encontrar retorna un -1. String texto="En un lugar de la Cimeria de cuyo nombre no quiero acordame, existia un barbaro enorme dispuesto a pisar con sus sandalias los enjoyados trobnos de la tierra" int ini=0; int num=texto.indexOf("a",0); while (num!=-1){ ini=ini+1; num=texto.indexOf("a",num); } return ini; // Las veces que hemos encontrado la letra a. Espero que te sirve de ayuda. |
| |||
He hecho unas cuantas pruebas a ver la implementacion más eficiente.... y el resultado es.... que uses el que te sea más claro, ya que los optimizadores del compilador hacen cosas ciertamente curiosas, jejeje. Además que por ejemplo, con un String > 2K, el tiempo de proceso ronda los 18 microsegundos!! Como anecdota, decir que la implementacion más eficiente en tiempo que he probado es, sorprendetemente, esta: String test ="..."; char[] losChars = test.toCharArray(); int num = 0; for (int i = 0; i < losChars.length; i++) { if (losChars[i] == 'a') { num++; } } La idea del por que es que no usa apenas funciones y se limita a llamadas básicas. Cosas curiosas sobre compiladores |
| ||||
GreenEyed, hay miles de implementaciones para cada cosa; como he dicho antes prefiero hacer las cosas recursivamente, aunque, como bien dices, consuma más recursos y probablemente el Garbage Collector tenga más trabajo. Dicen los que saben que iterar es de sabios... pero que recursar es divino. De cualquier manera, gracias por tu post. De ahora en adelante comprobaré mejor mis algoritmos... See you around
__________________ El último TipdaR |
| |||
Estoy muy de acuerdo en que la recursividad en muchos casos es mas elegante, pero para casos tan sencillos como estos, quizá sea más complejo que una solución simple. Aparte de que en Java si que es importante no darle trabajo extra el GC alegremente, que luego le cuesta. Pero vamos, que es correcto y que en muchos casos no habrá mucha diferencia. Yo como estoy más orientado a programas de larga duración donde gestionar la memoria es más crítico... pues se me ve el plumero, jejeje. Deformación profesional . |