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 pomocouin>operátor. Thein>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!'>)> |
>
>
porovnanie java reťazcov
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>>> 'geeks'> # 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)
string.compare c#
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'>])> |
tring to int
>
>
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.
mb na gb
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ístupoperator.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)