"Oferta de dedo de espada" - Cuerda para zurdos

Descripción del título: la
operación de rotación a la izquierda de una cadena consiste en transferir varios caracteres delante de la cadena hasta el final de la cadena. Defina una función para realizar la operación de rotación a la izquierda de la cadena. Por ejemplo, si ingresa la cadena "abcdefg" y el número 2, la función devolverá el resultado "cdefgab", que se gira dos bits a la izquierda.
Ejemplo 1:

输入: s = "abcdefg", k = 2
输出: "cdefgab"

Ejemplo 2:

输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
 

límite:

  • 1 <= k <s. Longitud <= 10000

Fuente:
Enlace LeetCode : https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof

Análisis de
problemas : utilicé dos métodos para este problema: el
primero: uso de la función de intercepción de cadenas substr () de cadena
Inserte la descripción de la imagen aquí

  • Primero, asigne una cadena tmp a s + s, que es la nueva cadena después de que la cadena original se empalme al principio y al final.
  • La flecha roja apunta al comienzo de la cadena interceptada y la flecha verde apunta al final de la cadena interceptada.
  • s.substr (posición inicial, longitud de la intercepción), el subíndice comienza desde 0, por lo que la n correspondiente es el subíndice inicial, y la longitud de la cadena original es la longitud a interceptar.
    código ac:
class Solution {
    
    
public:
    string reverseLeftWords(string s, int n) {
    
    
        string tmp=s+s;
        int len=s.size();
        return tmp.substr(n,len);
    }
};

El segundo tipo:

  • Puede verse como atravesar desde n y luego atravesar hasta n-1, que puede verse como un bucle.
  • Reciba con una cadena vacía, recorra desde el subíndice n y use una variable num para controlar el número total de recorrido hasta que se alcance la longitud de la cadena.
  • ¿Cómo controlar la formación del recorrido de bucle? Utilice el control de longitud, n% = s.size ().
class Solution {
    
    
public:
    string reverseLeftWords(string s, int n) {
    
    
        string tmp="";
        int num=0;
        int len=s.size();
        while(num!=len)
        {
    
    
            tmp+=s[n];
            n++;
            num++;
            n%=len;
        }
        return tmp;
    }
};

Inserte la descripción de la imagen aquí
El uso de funciones de cadena para interceptar es aún mucho más lento en velocidad, o los bucles de escritura a mano son más rápidos.

Supongo que te gusta

Origin blog.csdn.net/Yang_1998/article/details/106488578
Recomendado
Clasificación