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í

  1. Index prvního znaku je 0 (nikoli 1).
  2. Li poz je rovna délce řetězce, funkce vrací prázdný řetězec.
  3. 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.
  4. Pokud je požadovaný podřetězec jen je větší než velikost řetězce, pak vrácený podřetězec je [pos, velikost()) .
  5. 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.