logo

Podreťazec v C++

Funkcia podreťazec sa používa na manipuláciu s operáciami s reťazcami, napr prasknutý() , pripojiť () , atď . Vygeneruje nový reťazec s inicializovanou hodnotou na kópiu podreťazca tohto objektu. V C++ je hlavičkový súbor, ktorý sa vyžaduje pre funkcie std::substr(), string .

Funkcia podreťazca má dve hodnoty poz a len ako argument a vráti novovytvorený objekt typu reťazec s inicializovanou hodnotou na kópiu podreťazca tohto objektu. Kopírovanie reťazca začína od poz a je hotovo do pos+len znamená [poz, poz+len).

Syntax:



string substr (size_t pos, size_t len) const;>

Parametre:

  • poz.: Pozícia prvého znaku, ktorý sa má skopírovať.
  • len: Dĺžka podreťazca.
  • size_t: Je to integrálny typ bez znamienka.

Návratová hodnota: Vracia objekt typu reťazec.

Prí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ýkon
String is: ks>
  • Časová zložitosť: O(N)
  • Pomocný priestor: O(N)

Ďalšie príklady:

string: '  h e l l o w o r l d  ' index: 0 1 2 3 4 5 6 7 8 9 10>

ak napíšeme: -

  • s.substr(s.begin(),3) => chyba kompilácie (pretože nemožno konvertovať iterátor na dátový typ int)
  • s.substr(2,3) => llo (tri písmená z 2. indexu)
  • s.substr(*s.begin()-s[0],3) => hel (*s.begin() je ‚h‘, potom ‚h‘-s[0]=> ‚h‘-‘h‘=0 znamená substr(0,3) —– tri písmená od nultého indexu
  • s.substr(5,1) => „ “ (vytlačí prázdne miesto, to znamená na 5. indexe)
  • s.substr(2,0) => (nie je výstup) (vyberie nula písmen z druhého indexu)

Dôležité body na zapamätanie

  1. Index prvého znaku je 0 (nie 1).
  2. Ak poz sa rovná dĺžke reťazca, funkcia vráti prázdny reťazec.
  3. Ak poz je väčšia ako dĺžka reťazca, vyhodí mimo_rozsah. Ak sa tak stane, v reťazci nenastanú žiadne zmeny.
  4. Ak je požadovaný podreťazec len je väčšia ako veľkosť reťazca, potom vrátený podreťazec je [pos, size()) .
  5. Ak len nie je odovzdaný ako parameter, potom je vrátený podreťazec [pos, veľkosť()).

Aplikácie podreťazca

  • Získajte podreťazec za znakom
  • Získajte podreťazec pred znak
  • Vytlačte všetky podreťazce daného reťazca
  • Súčet všetkých podreťazcov reťazca reprezentujúceho číslo
  • Vytlačte maximálnu hodnotu všetkých podreťazcov reťazca reprezentujúceho číslo
  • Vytlačte minimálnu hodnotu všetkých podreťazcov reťazca reprezentujúceho číslo

Získajte podreťazec za znakom

V tomto je daný reťazec a znak a vy musíte vytlačiť podreťazec, za ktorým nasleduje daný znak.
Extrahujte všetko po : v reťazci pes mačka .

Prí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ýkon
String is: cat>

Časová zložitosť: O(N)

Pomocný priestor: O(N)

Ako dostať podreťazec pred znak?

V tomto je daný reťazec a znak a vy musíte vytlačiť podreťazec, za ktorým nasleduje daný znak.

sql poradie podľa dátumu

Prí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ýkon
String is: dog>

Časová zložitosť: O(N)

Pomocný priestor: O(N)

Ako vytlačiť všetky podreťazce daného reťazca?

Zadaný reťazec ako vstup. Musíme napísať program, ktorý vypíše všetky neprázdne podreťazce daného reťazca.

Prí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ýkon
a ab abc abcd b bc bcd c cd d>

Časová zložitosť: O (N3)

Pomocný priestor: O(1)

Vytlačiť súčet všetkých podreťazcov reťazca reprezentujúceho číslo

Vzhľadom na celé číslo reprezentované ako reťazec musíme získať súčet všetkých možných podreťazcov tohto reťazca.

Prí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 v;  int n = s.dlzka();  pre (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ýkon
1670>

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

Vytlačte maximálnu hodnotu všetkých podreťazcov reťazca reprezentujúceho číslo

Vzhľadom na celé číslo reprezentované ako reťazec potrebujeme získať maximum zo všetkých možných podreťazcov daného reťazca, ktorý predstavuje číslo.

Prí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 v;  pre (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ýkon
823>

Vysvetlenie: Všetky podreťazce sú { 8, 82, 823, 2, 23, 3 } a podreťazec s maximálnou hodnotou je 823.

Časová zložitosť: O(N3)

Pomocný priestor: O(N!)

Vytlačte minimálnu hodnotu všetkých podreťazcov reťazca reprezentujúceho číslo

Vzhľadom na celé číslo reprezentované ako reťazec potrebujeme získať minimum všetkých možných podreťazcov daného reťazca, ktorý predstavuje číslo.

Prí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 v;  pre (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ýkon
2>

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

Iné aplikácie podreťazca

  • Vyhľadávanie textu: Podreťazce sa používajú na vyhľadávanie slov alebo fráz vo väčších častiach textu. Toto sa bežne používa vo vyhľadávačoch, kde používateľ môže zadať frázu alebo kľúčové slovo a nástroj vyhľadá všetky zhody obsahujúce tento podreťazec.
  • Analýza textu: Podreťazce sa používajú v algoritmoch analýzy textu na rozdelenie väčších reťazcov na menšie časti. Analyzátor možno použiť napríklad na extrahovanie jednotlivých slov z vety a ich uloženie do dátovej štruktúry.
  • Manipulácia s textom: Podreťazce sa používajú v aplikáciách na manipuláciu s textom na nájdenie a nahradenie určitých slov alebo fráz vo väčších častiach textu. Toto možno použiť na vykonávanie úloh vyhľadávania a nahrádzania alebo na aktualizáciu informácií v dokumente.
  • Spracovanie prirodzeného jazyka: Podreťazce sa používajú v algoritmoch spracovania prirodzeného jazyka na identifikáciu slov a fráz. Používa sa v aplikáciách, ako je rozpoznávanie reči, kde algoritmus musí identifikovať slová vyslovené používateľom.
  • Rozpoznávanie vzorov: Podreťazce sa používajú v algoritmoch rozpoznávania vzorov na identifikáciu vzorov v údajoch. To možno použiť na identifikáciu trendov vo finančných údajoch alebo na zistenie anomálií v obrázkoch.
  • Zabezpečenie heslom: Podreťazce sa používajú na overenie hesiel. To sa dosiahne porovnaním zadaného hesla s uloženým podreťazcom pôvodného hesla. Ak sa tieto dva zhodujú, heslo sa overí. Táto technika sa používa v mnohých aplikáciách na zvýšenie bezpečnosti.