Skontrolujte, či reťazec obsahuje podreťazec v Pythone

Tento článok sa bude zaoberať tým, ako skontrolovať, či a Python string obsahuje iný reťazec alebo podreťazec v Pythone. Vzhľadom na dva reťazce skontrolujte, či je v danom reťazci podreťazec.

  Input:   Substring = 'geeks'   String='geeks for geeks'   Output:   yes   Input:   Substring = 'geek'  String='geeks for geeks'   Output:   yes   Explanation:   In this, we are checking if the substring is present in a given string or not. 

Podreťazec Pythonu v reťazci

Kontrola podreťazca je jednou z najpoužívanejších úloh v Pythone. Python používa mnoho metód na kontrolu reťazca obsahujúceho podreťazec ako, find(), index(), count() atď. Najúčinnejšou a najrýchlejšou metódou je použitie v operátor, ktorý sa používa ako porovnávací operátor. Tu sa budeme zaoberať rôznymi prístupmi:

  • Použitie If-Else
  • Použitie v operátorovi
  • Kontrola pomocou metóda split().
  • Použitím metóda find().
  • Použitím metóda count().
  • Použitím metóda index().
  • Používanie porozumenia zoznamu
  • Použitie funkcie lambda
  • Použitie magickej triedy __contains__.
  • Použitie funkcie krájania
  • Použitím regulárne výrazy
  • pomocou metódy operátor obsahuje().

Skontrolujte Podreťazec Pythonu v reťazci pomocou If-Else

V Pythone môžete skontrolovať prítomnosť podreťazca pythonu v reťazci pomocou an ak-inak vyhlásenie. Príkaz if-else vám umožňuje podmienečne vykonávať rôzne bloky kódu na základe toho, či je podmienka pravdivá alebo nepravdivá.

Python3




# Take input from users> MyString1> => 'A geek in need is a geek indeed'> > if> 'need'> in> MyString1:> > print> (> 'Yes! it is present in the string'> )> else> :> > print> (> 'No! it is not present'> )>

Výkon

Yes! it is present in the string 

Časová zložitosť: O(n)
Pomocný priestor: O(1)

Kontrola podreťazca Pythonu v reťazci pomocou V Operátorovi

V Pythone môžete jednoducho skontrolovať, či sa v danom reťazci nachádza podreťazec pomocou in> operátor. The in> Operátor sa používa na testovanie, či konkrétna hodnota (podreťazec) existuje v rámci sekvencie.

Python3




text> => 'Geeks welcome to the Geek Kingdom!'> > if> 'Geek'> in> text:> > print> (> 'Substring found!'> )> else> :> > print> (> 'Substring not found!'> )> > if> 'For'> in> text:> > print> (> 'Substring found!'> )> else> :> > print> (> 'Substring not found!'> )>

Výkon

Substring found! Substring not found! 

Časová zložitosť: O(n)
Pomocný priestor: O(1)

Kontrola podreťazca Pythonu v reťazci pomocou metódy Split().

Kontrola, či je podreťazec pythonu v reťazci prítomný alebo sa nepoužíva rozdeliť (). Najprv rozdeľte daný reťazec na slová a uložte ich do premennej s, potom pomocou podmienky if skontrolujte, či sa v danom reťazci nachádza podreťazec alebo nie.

Python3




# input strings str1 and substr> string> => 'geeks for geeks'> # or string=input() ->prevzatie vstupu od používateľa>>> # or substring=input()> > # splitting words in a given string> s> => string.split()> > # checking condition> # if substring is present in the given string then it gives output as yes> if> substring> in> s:> > print> (> 'yes'> )> else> :> > print> (> 'no'> )>

Výkon

Yes 

Časová zložitosť: O(n + m)
Pomocný priestor: O(n)

Skontrolujte podreťazec Pythonu v reťazci pomocou metódy Find().

Môžeme opakovane kontrolovať každé slovo, ale Python nám poskytuje vstavanú funkciu Nájsť() ktorý kontroluje, či je v reťazci prítomný podreťazec, čo sa robí v jednom riadku. funkcia find() vráti -1, ak sa nenájde, inak vráti prvý výskyt, takže pomocou tejto funkcie sa dá tento problém vyriešiť.

Python3




def> check(string, sub_str):> > if> (string.find(sub_str)> => => -> 1> ):> > print> (> 'NO'> )> > else> :> > print> (> 'YES'> )> > > # driver code> string> => 'geeks for geeks'> sub_str> => 'geek'> check(string, sub_str)>

Výkon

Yes 

Časová zložitosť: O(N)
Pomocný priestor: O(1)

Skontrolujte podreťazec Pythonu v reťazci pomocou metódy Count().

Môžete tiež spočítať počet výskytov konkrétneho podreťazca v reťazci, potom môžete použiť Python počítať () metóda. Ak sa podreťazec nenájde, vytlačí sa áno, inak sa vytlačí nie.

Python3




def> check(s2, s1):> > if> (s2.count(s1)>> 0> ):> > print> (> 'YES'> )> > else> :> > print> (> 'NO'> )> > > s2> => 'A geek in need is a geek indeed'> s1> => 'geeks'> check(s2, s1)>

Výkon

No 

Časová zložitosť: O(N)
Pomocný priestor: O(1)

Skontrolujte podreťazec Pythonu v reťazci pomocou metódy Index().

The Metóda Index(). vráti počiatočný index podreťazca odovzdaného ako parameter. Tu podreťazec je prítomný na indexe 16.

Python3




any_string> => 'Geeks for Geeks substring '> start> => 0> end> => 1000> print> (any_string.index(> 'substring'> , start, end))>

Výkon

16 

Časová zložitosť: O(N)
Pomocný priestor: O(1)

Skontrolujte podreťazec Pythonu v reťazci u spievať List Comprehension

Ak chcete skontrolovať podreťazec Pythonu v reťazci pomocou porozumenie zoznamu . Použitie porozumenia zoznamu poskytuje stručný spôsob, ako skontrolovať podreťazec v reťazci a určiť, či existuje v niektorom zo slov.

Python3




s> => 'geeks for geeks'> s2> => 'geeks'> print> ([> 'yes'> if> s2> in> s> else> 'no'> ])>

Výkon

['Yes'] 

Časová zložitosť: O(N)
Pomocný priestor: O(1)

Skontrolujte podreťazec Pythonu v reťazci pomocou funkcie Lambda

Ak chcete skontrolovať podreťazec Pythonu v reťazci pomocou lambda funkcia . Použitie funkcie lambda poskytuje stručný spôsob, ako skontrolovať podreťazec v reťazci a určiť, či existuje v niektorom zo slov.

Python3




s> => 'geeks for geeks'> s2> => 'geeks'> x> => list> (> filter> (> lambda> x: (s2> in> s),s.split()))> print> ([> 'yes'> if> x> else> 'no'> ])>

Výkon

['Yes'] 

Časová zložitosť: O(n + m)
Pomocný priestor: O (m)

Skontrolujte podreťazec Pythonu v reťazci pomocou magickej triedy __contains__.

Na kontrolu podreťazca pythonu v reťazci používame __contains__(). Táto metóda sa používa na kontrolu, či je reťazec prítomný v druhom reťazci alebo nie.

Python3




a> => [> 'Geeks-13'> ,> 'for-56'> ,> 'Geeks-78'> ,> 'xyz-46'> ]> for> i> in> a:> > if> i.__contains__(> 'Geeks'> ):> > print> (f> 'Yes! {i} is containing.'> )>

Výkon

Yes! Geeks-13 is containing. Yes! Geeks-78 is containing. 

Časová zložitosť: O(N)
Pomocný priestor: O(1)

Skontrolujte podreťazec Pythonu v reťazci pomocou Slicingu

Skontrolujte podreťazec pythonu v reťazci pomocou rezania. Táto implementácia používa slučku na iteráciu cez každý možný počiatočný index podreťazca v reťazci a potom používa krájanie na porovnanie aktuálneho podreťazca s argumentom podreťazca. Ak sa aktuálny podreťazec zhoduje s argumentom podreťazca, funkcia vráti hodnotu True, inak vráti hodnotu False.

Python3




def> is_substring(string, substring):> > for> i> in> range> (> len> (string)> -> len> (substring)> +> 1> ):> > if> string[i:i> +> len> (substring)]> => => substring:> > return> True> > return> False> string> => 'A geeks in need is a geek indeed'> substring> => 'geeks'> print> (is_substring(string,substring))>

Výkon

True 

Časová zložitosť: O(n*m)
kde n je dĺžka argumentu reťazca a m je dĺžka argumentu podreťazca. Je to preto, že funkcia používa slučku na iteráciu cez každý možný počiatočný index podreťazca v reťazci a potom používa rezanie na porovnanie aktuálneho podreťazca s argumentom podreťazca. V najhoršom prípade sa slučka bude opakovať n-m+1-krát a každá operácia rezu trvá O(m) čas, čo vedie k celkovej časovej zložitosti O((n-m+1)m) = O(nm) .
Pomocný priestor: O(1)

Skontrolujte podreťazec Pythonu v reťazci pomocou regulárneho výrazu

V Pythone môžete skontrolovať prítomnosť podreťazca pythonu v reťazci pomocou regulárne výrazy . Regulárne výrazy poskytujú výkonné možnosti porovnávania vzorov, čo vám umožňuje definovať komplexné vzory vyhľadávania na porovnávanie podreťazcov. Tu je návod, ako môžete použiť regulárne výrazy na kontrolu podreťazca v reťazci.

Python3




import> re> > MyString1> => 'A geek in need is a geek indeed'> > if> re.search(> 'need'> , MyString1):> > print> (> 'Yes! it is present in the string'> )> else> :> > print> (> 'No! it is not present'> )>

Výkon

Yes! it is present in the string 

Časová zložitosť: O(n), kde n je dĺžka vstupného reťazca.
Priestorová zložitosť: O(1), keďže nevyužívame žiadny ďalší priestor

Skontrolujte podreťazec Pythonu v reťazci pomocou metódy operator.contains().

Používa sa tento prístup operator.contains() metóda na kontrolu, či je podreťazec prítomný v reťazci Ak je podmienka True print yes inak print no

Python3




#Python program to check if a substring is present in a given string> import> operator as op> s> => 'geeks for geeks'> s2> => 'geeks'> if> (op.contains(s,s2)):> > print> (> 'yes'> )> else> :> > print> (> 'no'> )>

Výkon

Yes 

Časová zložitosť: O(N)
Pomocný priestor: O(1)