Saltar al contenido

Compruebe si un carácter solo aparece como una única subcadena contigua o no

Ver discusión

Mejorar artículo

Guardar artículo

me gusta el articulo

cadena dada Paja de longitud norte. La tarea es determinar si un carácter se presenta sólo como un único contiguo subcadena o no, es decir, no debe haber ningún otro carácter alfabético entre dos alfabetos iguales en la cadena.

Ejemplos:

Aporte: «aaaa»
Salida: no es verdad
Explicación: Existe ‘A’ entre ‘a’ y ‘a’. Por lo tanto, «aa» se vuelve discontinuo.

Aporte: “aaaaaabbbb”
Salida: DÓNDE
Explicación: Los diferentes segmentos formados a partir de la entrada dada son «aa», «AA», «bb» y «BB», todos son continuos y no tienen barreras entre ellos.

Acercarse: Usa la siguiente idea para resolver el problema dado:

Almacene la última aparición de cada carácter en tarjeta hash para que se pueda comparar con la ocurrencia anterior y encontrar la distancia entre ellos. Si esta distancia se vuelve más de 1 entonces es discontinuo, de lo contrario continuo.

Siga los pasos dados para solucionar el problema dado:

  • Cuerda transversal Paja (decir i).
  • si Paja[i] está presente en el mapa
    • Si la diferencia entre la última aparición y (yo + 1) es igual a 1 luego actualice la última copia de la yo-esto personaje.
    • De lo contrario volver falso.
  • De lo contrario, actualice la última copia de yo-esto dibujar en el mapa Hash como (i + 1).
  • Rendir DÓNDE después de que termine el bucle.

A continuación se muestra la implementación del enfoque anterior:

C++14

#include <bits/stdc++.h>

using namespace std;

 

bool isContinuous(string& temp)

{

    

    

    unordered_map<char, int> last_Pos;

 

    for (int i = 0; i < temp.length(); i++) {

        

        

        if (last_Pos[temp[i]]) {

            

            

            

            if (i - last_Pos[temp[i]] + 1 <= 1) {

                last_Pos[temp[i]] = i + 1;

            }

            else {

                return 0;

            }

        }

        else {

            last_Pos[temp[i]] = i + 1;

        }

    }

    return 1;

}

 

int main()

{

    string str = "aaAAbbBB";

    if (isContinuous(str)) {

        cout << "True";

    }

    else {

        cout << "False";

    }

    return 0;

}

Complejidad del tiempo: A)
cuarto auxiliar: A)