logo

Subșir în C++

Funcția subșir este folosită pentru a gestiona operațiuni cu șir cum ar fi strcat() , adăuga() , etc . Acesta generează un șir nou cu valoarea inițializată la o copie a unui subșir al acestui obiect. În C++, fișierul antet care este necesar pentru funcțiile std::substr(), este .

Funcția subșir ia două valori poz și numai ca argument și returnează un obiect șir nou construit cu valoarea sa inițializată la o copie a unui subșir al acestui obiect. Copierea șirului începe de la poz și se face până la post+len înseamnă [pos, pos+len).



Sintaxă:

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

Parametri:

  • poz: Poziția primului caracter de copiat.
  • numai: Lungimea sub-șirului.
  • dimensiune_t: Este un tip integral nesemnat.

Valoare returnată: Returnează un obiect șir.



Exemplu:

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; }>

Ieșire
String is: ks>
  • Complexitatea timpului: PE)
  • Spațiu auxiliar: PE)

Mai multe exemple:

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

daca scriem: -



  • s.substr(s.begin(),3) => eroare de compilare (deoarece nu se poate converti un iterator într-un tip de date int)
  • s.substr(2,3) => llo (trei litere din al doilea index)
  • s.substr(*s.begin()-s[0],3) => hel (*s.begin() este ‘h’ apoi ‘h’-s[0]=> ‘h’-‘h’=0 înseamnă substr(0,3) —– trei litere din indicele zero
  • s.substr(5,1) => ‘ ‘ (tipărește spațiu liber, adică la al 5-lea index)
  • s.substr(2,0) => (nu se iese) (selectează zero litere din al doilea index)

Puncte importante de reținut

  1. Indicele primului caracter este 0 (nu 1).
  2. Dacă poz este egală cu lungimea șirului, funcția returnează un șir gol.
  3. Dacă poz este mai mare decât lungimea șirului, aruncă out_of_range. Dacă se întâmplă acest lucru, nu există modificări în șir.
  4. Dacă sub-șirul solicitat numai este mai mare decât dimensiunea unui șir, apoi subșirul returnat este [poziție, dimensiune()) .
  5. Dacă numai nu este transmis ca parametru, apoi subșirul returnat este [poz, dimensiune()).

Aplicații ale subșirului

  • Obțineți un subșir după un caracter
  • Obțineți un șir secundar înaintea unui caracter
  • Tipăriți toate Sub-șirurile unui șir dat
  • Suma tuturor subșirurilor unui șir reprezentând un număr
  • Tipăriți valoarea maximă a tuturor subșirurilor de caractere ale unui șir care reprezintă un număr
  • Tipăriți valoarea minimă a tuturor subșirurilor de caractere ale unui șir care reprezintă un număr

Obțineți un subșir după un caracter

În aceasta, sunt date un șir și un caracter și trebuie să tipăriți subșirul urmat de caracterul dat.
Extrage totul după : în sfoară Caine pisica .

Exemplu:

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; }>

Ieșire
String is: cat>

Complexitatea timpului: PE)

Spațiu auxiliar: PE)

Cum să obțineți un substring înaintea unui caracter?

În aceasta, sunt date un șir și un caracter și trebuie să tipăriți subșirul urmat de caracterul dat.

Exemplu:

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; }>

Ieșire
String is: dog>

Complexitatea timpului: PE)

Spațiu auxiliar: PE)

Cum să imprimați toate subșirurile unui șir dat?

Dat un șir ca intrare. Trebuie să scriem un program care va tipări toate subșirurile negoale ale acelui șir dat.

Exemplu:

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; }>

Ieșire
a ab abc abcd b bc bcd c cd d>

Complexitatea timpului: PE3)

Spațiu auxiliar: O(1)

Tipăriți Suma tuturor subșirurilor unui șir care reprezintă un număr

Având în vedere un număr întreg reprezentat ca șir, trebuie să obținem suma tuturor subșirurilor posibile ale acestui șir.

Exemplu:

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.lungime();  pentru (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; }>

Ieșire
1670>

Complexitatea timpului: PE3)
Spațiu auxiliar: PE)

Tipăriți valoarea maximă a tuturor subșirurilor unui șir care reprezintă un număr

Având în vedere un număr întreg reprezentat ca șir, trebuie să obținem maximul tuturor subșirurilor posibile ale șirului dat care reprezintă un număr.

Exemplu:

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;  pentru (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; }>

Ieșire
823>

Explicaţie: Toate subșirurile sunt { 8, 82, 823, 2, 23, 3 } și valoarea maximă a subșirurilor este 823.

Complexitatea timpului: PE3)

Spatiu auxiliar: PE!)

Tipăriți valoarea minimă a tuturor subșirurilor unui șir care reprezintă un număr

Având în vedere un număr întreg reprezentat ca șir, trebuie să obținem minimumul tuturor subșirurilor posibile ale șirului dat care reprezintă un număr.

Exemplu:

cum se convertesc un întreg în șir de caractere java
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;  pentru (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; }>

Ieșire
2>

Complexitatea timpului: PE3)
Spatiu auxiliar: PE!)

Alte aplicații ale subșirului

  • Căutare text: Subșirurile sunt folosite pentru a căuta cuvinte sau expresii în corpuri mai mari de text. Acesta este folosit în mod obișnuit în motoarele de căutare, unde un utilizator poate introduce o expresie sau un cuvânt cheie, iar motorul va căuta orice potrivire care conține acel subșir.
  • Analiza textului: Subșirurile sunt folosite în algoritmii de analiză a textului pentru a descompune șirurile mai mari în bucăți mai mici. De exemplu, un parser poate fi folosit pentru a extrage cuvinte individuale dintr-o propoziție și pentru a le stoca într-o structură de date.
  • Manipularea textului: Subșirurile sunt folosite în aplicațiile de manipulare a textului pentru a găsi și înlocui anumite cuvinte sau expresii în corpuri mai mari de text. Acesta poate fi folosit pentru a efectua activități de căutare și înlocuire sau pentru a actualiza informații dintr-un document.
  • Procesarea limbajului natural: Subșirurile sunt folosite în algoritmii de procesare a limbajului natural pentru a identifica cuvinte și fraze. Acesta este utilizat în aplicații precum recunoașterea vorbirii, unde algoritmul trebuie să identifice cuvintele rostite de un utilizator.
  • Recunoasterea formelor: Subșirurile sunt folosite în algoritmii de recunoaștere a modelelor pentru a identifica modele în date. Acesta poate fi folosit pentru a identifica tendințele în datele financiare sau pentru a detecta anomalii în imagini.
  • Securitate prin parolă: Subșirurile sunt folosite pentru a verifica parolele. Acest lucru se face prin compararea parolei introduse cu un subșir stocat al parolei originale. Dacă cele două se potrivesc, atunci parola este verificată. Această tehnică este utilizată în multe aplicații pentru a crește securitatea.