LintCode 3208: preguntas de entrada de procesamiento de cadenas de división de cadenas

3208 · División de cadenas
C++
Fácil

Este tema es un tema previo al lanzamiento. Si encuentra algún problema, comuníquese con nosotros a través de "Corrección de problemas" y actualizaremos su cuenta a VIP como agradecimiento.
Descripción
Esta pregunta requiere que complete la función splitString en el archivo Solution.cpp.

Esta función toma dos argumentos.

Una cadena es como la cadena original que se dividirá.
Se utiliza una cadena t no vacía como base de división.
Todas las subcadenas divididas en orden se forman en un vector y se devuelven mediante la declaración de devolución.

La máquina de evaluación ejecuta main.cpp para llamar a la función splitString en Soluction.cpp importando una biblioteca de funciones personalizada y analiza el contenido del vector de cadena devuelto.

No hay necesidad de usar la sentencia cin o la sentencia cout para este problema.
Los datos de entrada se almacenan en los argumentos de la función y los datos de salida se devuelven mediante la declaración de retorno.
Ejemplo
de entrada Muestra 1:

asdf, hola, ok
,
ejemplo de salida 1:

[“asdf”, “Hola”, “ok”]
Se eliminan todas las comas de la cadena original y la cadena se separa de la posición de coma.

Muestra de entrada 2:

,
Ejemplo de salida 2:

[]
La cadena original está vacía, por lo que se devuelve un contenedor de vectores vacío.

Solución 1:

/**
 * @param s: A string
 * @param t: A string
 * @return: A vector of sub strings
 */
vector<string> splitString(string &s, string &t) {
    
    
    vector<string> res;
    string s2(s);
    while (s2.size() > 0) {
    
    
        int pos = s2.find(t);
        if (pos == -1) {
    
    
            res.push_back(s2);
            break;
        }
        res.push_back(s2.substr(0, pos));
        s2 = s2.substr(pos + 1);
    }
    return res;
}

Solución 2:

/**
 * @param s: A string
 * @param t: A string
 * @return: A vector of sub strings
 */
vector<string> splitString(string &s, string &t) {
    
    
    vector<string> res;
    int start = 0, pos = 0;
    pos = s.find(t);
    while (pos != -1) {
    
    
        res.push_back(s.substr(start, pos - start));
        start = pos + 1;
        pos = s.find(t, start);
        if (pos == -1) res.push_back(s.substr(start));  
    }
    //if (pos == -1) res.push_back(s.substr(pos + 1));
    return res;
}

Supongo que te gusta

Origin blog.csdn.net/roufoo/article/details/127645332
Recomendado
Clasificación