Podřetězec v C++
Funkce podřetězec se používá pro zpracování operací s řetězci, jako je prasklý() , připojit() , atd . Vygeneruje nový řetězec s jeho hodnotou inicializovanou na kopii podřetězce tohoto objektu. V C++ je hlavičkový soubor, který je vyžadován pro std::substr(), řetězcové funkce .
Funkce podřetězec nabývá dvou hodnot poz a jen jako argument a vrátí nově vytvořený objekt typu řetězec s jeho hodnotou inicializovanou na kopii dílčího řetězce tohoto objektu. Kopírování řetězce začíná od poz a je hotovo do pos+jen znamená [pos, poz+len).
Syntax:
string substr (size_t pos, size_t len) const;
Parametry:
- pozice: Pozice prvního znaku, který se má zkopírovat.
- jen: Délka dílčího řetězce.
- size_t: Je to integrální typ bez znaménka.
Návratová hodnota: Vrací objekt typu řetězec.
Příklad:
C++ // C++ program to demonstrate functioning of substr() #include #include using namespace std; int main() { // Take any string string s1 = 'Geeks'; // Copy two characters of s1 (starting // from position 3) string r = s1.substr(3, 2); // prints the result cout < < 'String is: ' < < r; return 0; } Výstup
String is: ks
- Časová složitost: NA)
- Pomocný prostor: NA)
Další příklady:
string: ' h e l l o w o r l d ' index: 0 1 2 3 4 5 6 7 8 9 10
když napíšeme: -
- s.substr(s.begin(),3) => chyba kompilace (protože nelze převést iterátor na datový typ int)
- s.substr(2,3) => llo (tři písmena z 2. indexu)
- s.substr(*s.begin()-s[0],3) => hel (*s.begin() je ‚h‘ pak ‚h‘-s[0]=> ‚h‘-‘h‘=0 znamená substr(0,3) —– tři písmena od nultého indexu
- s.substr(5,1) => ‘ “ (vytiskne prázdné místo, to je na 5. indexu)
- s.substr(2,0) => (není výstup) (vybere nula písmen z druhého indexu)
Důležité body k zapamatování
- Index prvního znaku je 0 (nikoli 1).
- Li poz je rovna délce řetězce, funkce vrací prázdný řetězec.
- Li poz je větší než délka řetězce, vyhodí out_of_range. Pokud k tomu dojde, nedojde k žádným změnám v řetězci.
- Pokud je požadovaný podřetězec jen je větší než velikost řetězce, pak vrácený podřetězec je [pos, velikost()) .
- Li jen není předán jako parametr, pak je vrácen podřetězec [pos, velikost()).
Aplikace podřetězců
- Získejte dílčí řetězec za znakem
- Získejte podřetězec před znak
- Vytiskněte všechny dílčí řetězce daného řetězce
- Součet všech podřetězců řetězce představujícího číslo
- Vytiskne maximální hodnotu všech podřetězců řetězce představujícího číslo
- Vytiskne minimální hodnotu všech podřetězců řetězce představujícího číslo
Získejte podřetězec za znakem
V tomto je zadán řetězec a znak a vy musíte vytisknout podřetězec následovaný daným znakem.
Extrahujte vše po : v řetězci Pes Kočka .
Příklad:
C++ // C++ program to demonstrate functioning of substr() #include #include using namespace std; int main() { // Take any string string s = 'dog:cat'; // Find position of ':' using find() int pos = s.find(':'); // Copy substring after pos string sub = s.substr(pos + 1); // prints the result cout < < 'String is: ' < < sub; return 0; } Výstup
String is: cat
Časová složitost: NA)
Pomocný prostor: NA)
Jak dostat podřetězec před znak?
V tomto je zadán řetězec a znak a vy musíte vytisknout podřetězec následovaný daným znakem.
Příklad:
C++ // C++ program to demonstrate functioning of substr() #include #include using namespace std; int main() { // Take any string string s = 'dog:cat'; // Find position of ':' using find() int pos = s.find(':'); // Copy substring before pos // Extract everything before the ':' in the string // 'dog:cat'. string sub = s.substr(0, pos); // prints the result cout < < 'String is: ' < < sub; return 0; } Výstup
String is: dog
Časová složitost: NA)
Pomocný prostor: NA)
Jak vytisknout všechny dílčí řetězce daného řetězce?
Zadán řetězec jako vstup. Musíme napsat program, který vypíše všechny neprázdné podřetězce daného řetězce.
Příklad:
C++ // C++ program to demonstrate all possible // substrings of a given string #include using namespace std; // Function to print all sub strings void subString(string s, int n) { // Pick starting point in outer loop // and lengths of different strings for // a given starting point for (int i = 0; i < n; i++) for (int len = 1; len <= n - i; len++) cout < < s.substr(i, len) < < endl; } // Driver program to test above function int main() { string s = 'abcd'; subString(s, s.length()); return 0; } Výstup
a ab abc abcd b bc bcd c cd d
Časová složitost: O (N 3 )
Pomocný prostor: O(1)
Vytisknout součet všech podřetězců řetězce představujícího číslo
Dané celé číslo reprezentované jako řetězec potřebujeme získat součet všech možných podřetězců tohoto řetězce.
Příklad:
C++ // C++ program to print sum of all possible substring of // a number represented as a string #include using namespace std; // Utility method to convert character digit to // integer digit int toDigit(char ch) { return (ch - '0'); } // Returns sum of all substring of num int sumOfSubstrings(string s) { vector proti; int n = s.délka(); for (int i = 0; i < n; i++) { for (int len = 1; len <= n - i; len++) { string sub = (s.substr(i, len)); int x = stoi(sub); v.push_back(x); } } int res = accumulate(v.begin(), v.end(), 0); return res; } // Driver code to test above methods int main() { string num = '1234'; cout < < sumOfSubstrings(num) < < endl; return 0; } Výstup
1670
Časová náročnost: NA 3 )
Pomocný prostor: NA)
Vytiskněte maximální hodnotu všech dílčích řetězců řetězce představujícího číslo
Dané celé číslo reprezentované jako řetězec potřebujeme získat maximum ze všech možných podřetězců daného řetězce, který představuje číslo.
Příklad:
C++ // C++ program to demonstrate max. of all possible // substrings of a given string #include using namespace std; void subString(string s, int n) { vector proti; for (int i = 0; i < n; i++) { for (int len = 1; len <= n - i; len++) { string sub = (s.substr(i, len)); int x = stoi(sub); v.push_back(x); } } cout < < *max_element(v.begin(), v.end()) < < endl; } // Driver program to test above function int main() { string s = '823'; subString(s, s.length()); return 0; } Výstup
823
Vysvětlení: Všechny podřetězce jsou { 8, 82, 823, 2, 23, 3 } a podřetězec s maximální hodnotou je 823.
Časová složitost: NA 3 )
Pomocný prostor: NA!)
Vytiskněte minimální hodnotu všech dílčích řetězců řetězce představujícího číslo
Vzhledem k celému číslu reprezentovanému jako řetězec potřebujeme získat minimum všech možných podřetězců daného řetězce, který představuje číslo.
Příklad:
C++ // C++ program to demonstrate minimum of all possible // substrings of a given string #include using namespace std; void subString(string s, int n) { vector proti; for (int i = 0; i < n; i++) { for (int len = 1; len <= n - i; len++) { string sub = (s.substr(i, len)); int x = stoi(sub); v.push_back(x); } } cout < < *min_element(v.begin(), v.end()) < < endl; } // Driver program to test above function int main() { string s = '4572'; subString(s, s.length()); return 0; } Výstup
2
Časová složitost: NA 3 )
Pomocný prostor: NA!)
Další aplikace podřetězce
- Hledání textu: Podřetězce se používají k vyhledávání slov nebo frází ve větších částech textu. To se běžně používá ve vyhledávačích, kde uživatel může zadat frázi nebo klíčové slovo a vyhledávač bude hledat všechny shody obsahující tento podřetězec.
- Analýza textu: Podřetězce se používají v algoritmech analýzy textu k rozdělení větších řetězců na menší části. Analyzátor lze například použít k extrahování jednotlivých slov z věty a jejich uložení do datové struktury.
- Manipulace s textem: Podřetězce se používají v aplikacích pro manipulaci s textem k vyhledání a nahrazení určitých slov nebo frází ve větších částech textu. To lze použít k provádění úloh vyhledávání a nahrazování nebo k aktualizaci informací v dokumentu.
- Zpracování přirozeného jazyka: Podřetězce se používají v algoritmech zpracování přirozeného jazyka k identifikaci slov a frází. To se používá v aplikacích, jako je rozpoznávání řeči, kde algoritmus musí identifikovat slova vyslovená uživatelem.
- Rozpoznávání vzorů: Podřetězce se používají v algoritmech rozpoznávání vzorů k identifikaci vzorů v datech. To lze použít k identifikaci trendů ve finančních datech nebo k detekci anomálií v obrazech.
- Zabezpečení heslem: Podřetězce se používají k ověření hesel. To se provádí porovnáním zadaného hesla s uloženým podřetězcem původního hesla. Pokud se oba shodují, heslo je ověřeno. Tato technika se používá v mnoha aplikacích ke zvýšení bezpečnosti.