Dada una cadena de entrada, invierta la cadena palabra por palabra.
Por ejemplo, dado s = «el cielo es azul», devuelve «el azul es el cielo».
Solución Java
Este problema es bastante sencillo. Primero dividimos la cadena en una matriz de palabras, y luego iteramos a través de la matriz y agregamos cada elemento a una nueva cadena. Nota: Se debe utilizar StringBuilder para evitar crear demasiadas cadenas. Si la cadena es muy larga, usar String no es escalable ya que String es inmutable y se crearán demasiados objetos y se recolectarán basura.
class Solution { public String reverseWords(String s) { if (s == null || s.length() == 0) { return ""; } // split to words by space String[] arr = s.split(" "); StringBuilder sb = new StringBuilder(); for (int i = arr.length - 1; i >= 0; --i) { if (!arr[i].equals("")) { sb.append(arr[i]).append(" "); } } return sb.length() == 0 ? "" : sb.substring(0, sb.length() - 1); } } |