Saltar al contenido

comprobar si uno string es un prefix de otro

Agradecemos tu ayuda para extender nuestros posts en referencia a las ciencias de la computación.

Solución:

Usar std::mismatch. Pase en el más corto string como el primer rango de iteradores y el más largo como el segundo rango de iteradores. El retorno es un par de iteradores, el primero es el iterador en el primer rango y el segundo, en el segundo rango. Si el primero es el final del primer rango, entonces sabes el corto string es el prefix del mas largo string p.ej

std::string foo("foo");
std::string foobar("foobar");

auto res = std::mismatch(foo.begin(), foo.end(), foobar.begin());

if (res.first == foo.end())

  // foo is a prefix of foobar.

si sabes cual string es más corto, el procedimiento es simple, solo use
std::equal con el mas corto string primero. Si no lo hace, algo como lo siguiente debería funcionar:

bool
unorderIsPrefix( std::string const& lhs, std::string const& rhs )

    return std::equal(
        lhs.begin(),
        lhs.begin() + std::min( lhs.size(), rhs.size() ),
        rhs.begin() );

std::string(X).find(Y) es cero si y solo si Y es un prefix de X

Sección de Reseñas y Valoraciones

Si para ti ha sido útil este artículo, sería de mucha ayuda si lo compartes con más seniors de esta manera contrubuyes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.