Espada se refiere a la oferta: 58. Invertir la secuencia de palabras: análisis y código (Java)

Sword se refiere a la oferta 58. Invertir el orden de las palabras, análisis de columnas y código [Java]

1. Título

Niuke llegó recientemente a Fish, un nuevo empleado, siempre tomaba una revista en inglés cada mañana y escribía algunas frases en su cuaderno. Mi colega Cat estaba muy interesado en lo que escribió Fish. Un día se lo pidió prestado a Fish para leerlo, pero no pudo leerlo. Por ejemplo, "estudiante. Soy yo". Más tarde me di cuenta de que este tipo había invertido el orden de las palabras en la oración, la oración correcta debería ser "Soy un estudiante". Cat no es bueno para cambiar estas palabras una por una. ¿Puedes ayudarlo?

Dos, análisis y código

1. Dos volteretas

(1) Pensando

Primero voltee cada palabra y luego voltee la oración completa dos veces para lograr el objetivo.

(2) Código

public class Solution {
    
    
    public String ReverseSentence(String str) {
    
    
        if (str.trim().equals(""))
            return str;
        
        char[] chstr = str.toCharArray();
        int l = 0, length = str.length();
        for (int i = 0; i < length; i++) {
    
    
            if (chstr[i] == ' ') {
    
    
                Reverse(chstr, l, i - 1);
                l = i + 1;
            }
            if (i == length - 1 && l < i)
                Reverse(chstr, l, length - 1);
        }
        
        Reverse(chstr, 0, length - 1);
        return String.valueOf(chstr);
    }
    
    public void Reverse(char[] chstr, int l, int r) {
    
    
        int m = (l + r) >> 1;
        for (int i = l; i <= m; i++) {
    
    
            char temp = chstr[i];
            chstr[i] = chstr[l + r - i];
            chstr[l + r - i] = temp;
        }
        return;
    }
}

(3) Resultados

Tiempo de ejecución: 21 ms, memoria ocupada: 9648k.

2. Empalme directo

(1) Pensando

Si se permite el espacio auxiliar, simplemente empalme la cuerda original directamente.

(2) Código

public class Solution {
    
    
    public String ReverseSentence(String str) {
    
    
        if (str.trim().equals(""))
            return str;
        String[] substr = str.split(" ");
        String ans = substr[substr.length - 1];
        for (int i = substr.length - 2; i >= 0; i--)
            ans = ans.concat(" " + substr[i]);
        return ans;
    }
}

(3) Resultados

Tiempo de ejecución: 20 ms, memoria ocupada: 9360k.

Tres, otro

Nada.

Supongo que te gusta

Origin blog.csdn.net/zml66666/article/details/112040516
Recomendado
Clasificación