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
- 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;
}
};
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.