La espada se refiere a la oferta: 58_2. Cadena girada a la izquierda: Análisis y código (Java)

Sword hace referencia a offer-58_2. Código y análisis de cadenas de rotación a la izquierda [Java]

1. Título

Hay una instrucción de cambio en lenguaje ensamblador llamada Rotate Left (ROL) Ahora hay una tarea simple, que es simular el resultado de esta instrucción con una cadena. Para una secuencia de caracteres dada S, genere la secuencia después de desplazarla circularmente K bits a la izquierda. Por ejemplo, la secuencia de caracteres S = "abcXYZdef", es necesaria para generar el resultado del desplazamiento circular a la izquierda en 3 bits, es decir, "XYZdefabc". ¿No es sencillo? OK, ¡hazlo!

Dos, análisis y código

1. Dos volteretas

(1) Pensando

Similar a la idea de "58. Invertir la secuencia de palabras", primero voltee los primeros k bits y otras partes de la cadena respectivamente, y luego invierta la cadena completa dos veces para lograr el objetivo.

(2) Código

public class Solution {
    
    
    public String LeftRotateString(String str,int n) {
    
    
        if (str.length() == 0 || n <= 0)
            return str;
        String ans = ReverseStr(str, 0, n - 1) + ReverseStr(str, n, str.length() - 1);
        return ReverseStr(ans, 0, str.length() - 1);
    }
    
    public String ReverseStr(String str, int l, int r) {
    
    
        String revStr = new String();
        for (int i = r; i >= l; i--)
            revStr = revStr.concat(String.valueOf(str.charAt(i)));
        return revStr;
    }
}

(3) Resultados

Tiempo de ejecución: 23ms, memoria ocupada: 9492k.

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 LeftRotateString(String str,int n) {
    
    
        if (str.length() == 0 || n <= 0)
            return str;
        return str.substring(n) + str.substring(0, n);
    }
}

(3) Resultados

Tiempo de ejecución: 19ms, memoria ocupada: 9680k.

Tres, otro

Nada.

Supongo que te gusta

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