Python di sottostringa comune più lungo

Python di sottostringa comune più lungo
Il problema è trovare la sottostringa comune più lunga in una determinata stringa. Il compito è prendere due stringhe e trovare la sottostringa comune più lunga con o senza ripetere i caratteri. In altre parole, abbina la sottostringa comune più lunga data nello stesso ordine e presente in entrambe le stringhe. Ad esempio, "Tech" è una sequenza di personaggi indicati in "NextTech", che è anche la sottostringa.

Il processo per trovare la sottosequenza comune più lunga:

Il semplice processo per trovare la sottosequenza comune più lunga è controllare ogni carattere della stringa 1 e trovare la stessa sequenza nella stringa 2 controllando ogni carattere della stringa 2 uno per uno per vedere se qualsiasi sottostringa è comune in entrambe le stringhe. Ad esempio, supponiamo che abbiamo una stringa 1 'ST1' e una stringa 2 'ST2' con le lunghezze A e B, rispettivamente. Controlla tutti i sottostringi di "ST1" e inizia a iterarti tramite "ST2" per verificare se esiste una sottostringa di "ST1" come "ST2". Inizia con l'abbinamento del sottostringa della lunghezza 2 e aumentando la lunghezza di 1 in ogni iterazione, aumentando alla lunghezza massima delle stringhe.

Esempio 1:

Questo esempio consiste nel trovare la sottostringa comune più lunga con i caratteri ripetuti. Python fornisce semplici metodi integrati per svolgere qualsiasi funzione. Nell'esempio seguente, abbiamo fornito il modo più semplice per trovare la sottosequenza comune più lunga in 2 stringhe. Combinando i loop "per" e "mentre" viene utilizzato per ottenere la sottostringa comune più lunga in una stringa. Dai un'occhiata all'esempio indicato di seguito:

def LongComsubs (ST1, ST2):
Ans = 0;
per un intervallo (len (st1)):
per b nell'intervallo (Len (ST2)):
k = 0;
while ((a + k) < len(st1) and (b + k) < len(st2)
e ST1 [A + K] == ST2 [B + K]):
k = k + 1;
Ans = max (Ans, K);
restituire Ans;
Se __Name__ == '__main__':
A = 'Abbaab'
B = 'babaab'
i = len (a)
j = len (b)
stampa ("La sottostringa comune più lunga in una stringa è", longcomsubs (a, b))

Il seguente output verrà prodotto dopo aver eseguito il codice sopra. Troverà la sottostringa comune più lunga e ti darà come output.

Esempio 2:

Un altro modo per trovare la sottostringa comune più lunga è seguire l'approccio iterativo. Un loop 'per' viene utilizzato per l'iterazione e una condizione 'if' corrisponde alla sottostringa comune.

def longcomsubs (a, b, m, n):
maxlen = 0
endIndex = m
Find = [[0 per x nell'intervallo (n + 1)] per y nell'intervallo (m + 1)]
per i nell'intervallo (1, m + 1):
per j in gamma (1, n + 1):
Se a [i - 1] == b [j - 1]:
Trova [i] [j] = trova [i - 1] [j - 1] + 1
Se trova [i] [j]> maxlen:
maxlen = find [i] [j]
endIndex = i
return x [endindex - maxlen: endindex]
Se __Name__ == '__main__':
A = 'Abbaab'
B = 'babaab'
i = len (a)
j = len (b)
print ("La sottostringa comune più lunga in una stringa è", longcomsubs (a, b, i, j))

Esegui il codice sopra in qualsiasi interprete di Python per ottenere l'output desiderato. Tuttavia, abbiamo utilizzato lo strumento Spyder per eseguire il programma per trovare la sottostringa comune più lunga in una stringa. Ecco l'output del codice sopra:

Esempio 3:

Ecco un altro esempio per aiutarti a trovare la sottostringa comune più lunga in una stringa usando la codifica Python. Questo metodo è il modo più piccolo, semplice e più semplice per trovare la più lunga sottosequenza comune. Dai un'occhiata al codice di esempio indicato di seguito:

def comune (st1, st2):
def _iter ():
Per A, B in Zip (ST1, ST2):
Se a == B:
resa a
altro:
ritorno
ritorno ".join (_iter ())
Se __Name__ == '__main__':
A = 'Abbaab'
B = 'babaab'
stampa ("La sottostringa comune più lunga in una stringa è", longcomsubs (a, b))

Di seguito è possibile trovare l'output del codice sopra indicato

Usando questo metodo, non abbiamo restituito la sottostringa comune ma la lunghezza di quella sottostringa comune. Per aiutarti a ottenere il risultato desiderato, abbiamo mostrato sia output che metodi per ottenere quei risultati.

La complessità temporale e la complessità dello spazio per trovare la sottostringa comune più lunga

C'è qualche costo da pagare per eseguire o eseguire qualsiasi funzione; La complessità del tempo è uno di questi costi. La complessità temporale di qualsiasi funzione viene calcolata analizzando quanto tempo può impiegare un'istruzione per essere eseguita. Quindi, per trovare tutti i sottostringi in "st1", abbiamo bisogno di O (a^2), dove "a" è la lunghezza di "st1" e "o" è il simbolo della complessità del tempo. Tuttavia, la complessità temporale dell'iterazione e la scoperta se la sottostringa esiste in "ST2" o no è O (m), dove "M" è la lunghezza di "ST2". Quindi la complessità del tempo totale di scoprire la sottostringa comune più lunga in due stringhe è O (a^2*m). Inoltre, la complessità dello spazio è un altro costo per l'esecuzione di un programma. La complessità dello spazio rappresenta lo spazio che un programma o una funzione manterrà in memoria durante l'esecuzione. Pertanto, la complessità spaziale di trovare la sottosequenza comune più lunga è O (1), in quanto non richiede spazio per eseguire.

Conclusione:

In questo articolo, abbiamo appreso i metodi per trovare la sottostringa comune più lunga in una stringa usando la programmazione Python. Abbiamo fornito tre esempi semplici e facili per ottenere la sottostringa comune più lunga in Python. Il primo esempio usa la combinazione di "per" e "while loop. Mentre nel secondo esempio, abbiamo seguito l'approccio iterativo usando la logica "per" loop e "if". Al contrario, nel terzo esempio, abbiamo semplicemente usato la funzione incorporata Python per ottenere la lunghezza della sottostringa comune in una stringa. Al contrario, la complessità temporale di trovare la sottostringa comune più lunga in una stringa usando Python è O (a^2*m), dove A e Ma sono la lunghezza delle due stringhe; String 1 e String 2, rispettivamente.