Sólo por ser diferente: una solución recursiva. No agrega espacios adicionales.
public static String reverse(String s) {
int k = s.indexOf(" ");
return k == -1 ? s : reverse(s.substring(k + 1)) + " " + s.substring(0, k);
}
System.out.println("[" + reverse("This is interview question") + "]");
// prints "[question interview is This]"
También voy a mejorar en la solución mediante el uso de split
\b
lugar (es tan obvio!).
String[] parts = "Word boundary is better than space".split("\\b");
StringBuilder sb = new StringBuilder();
for (int i = parts.length; i --> 0 ;) {
sb.append(parts[i]);
}
System.out.println("[" + sb.toString() + "]");
// prints "[space than better is boundary Word]"
Probablemente debería considerar tomar clases de certificación de Java, ya que le enseñará USADOS librerías de clases de Java. A continuación, tendrá las herramientas necesarias para llevar a cabo tales tareas. –
Invierta la cadena primero. Invierta las palabras entonces. Toma dos pasa pero muy limpio. Se puede hacer en 1 pase también. – Jack
@jack, creo que su primera palabra fue para ser "dividida", ¿sí? – CPerkins