Escriba un programa java para leer la entrada de un archivo, y luego ordene los caracteres dentro de cada palabra. Una vez que haya hecho eso, ordene todas las palabras resultantes en orden ascendente y finalmente seguidas por la suma de valores numéricos en el archivo.Entrevista Codificación Java Clasificación
- Quitar los caracteres especiales y dejar de palabras durante el procesamiento de los datos
- Medir el tiempo necesario para ejecutar el código
Digamos que el contenido del archivo es: Sachin Tendulkar anotó 18111 carreras ODI y 14692 Pruebas corre
de salida: achins adeklnrtu adn cdeors dio ESTT nrsu nrsu 32803
tiempo empleado: 3 milisegundos
Mi Código toma 15milliseconds ejecutar .....
por favor me sugiere ninguna forma rápida de solucionar este problema ...........
Código:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
public class Sorting {
public static void main(String[] ags)throws Exception
{
long st=System.currentTimeMillis();
int v=0;
List ls=new ArrayList();
//To read data from file
BufferedReader in=new BufferedReader(
new FileReader("D:\\Bhive\\File.txt"));
String read=in.readLine().toLowerCase();
//Spliting the string based on spaces
String[] sp=read.replaceAll("\\.","").split(" ");
for(int i=0;i<sp.length;i++)
{
//Check for the array if it matches number
if(sp[i].matches("(\\d+)"))
//Adding the numbers
v+=Integer.parseInt(sp[i]);
else
{
//sorting the characters
char[] c=sp[i].toCharArray();
Arrays.sort(c);
String r=new String(c);
//Adding the resulting word into list
ls.add(r);
}
}
//Sorting the resulting words in ascending order
Collections.sort(ls);
//Appending the number in the end of the list
ls.add(v);
//Displaying the string using Iteartor
Iterator it=ls.iterator();
while(it.hasNext())
System.out.print(it.next()+" ");
long time=System.currentTimeMillis()-st;
System.out.println("\n Time Taken:"+time);
}
}
cuando ejecuto el código anterior en mi PC se tarda sólo 2 ms.achins adeklnrtu adn cdeors dio ESTT nrsu nrsu 32803 tiempo empleado: 2 – UVM
¿Su archivo contiene sólo una línea? – MoraRockey
Crea la lista después de que se haya hecho la división. En ese punto, usted conoce el tamaño y puede proporcionar la capacidad. Quizás en vez de llamar a System.out.print cada vez, podría crear la cadena resultante en la memoria (usando StringBuilder) o crear un BufferedWriter primero. Pero para su pequeña entrada, no estoy seguro de que todo esto valga la pena ... – Axel