logo

Apakšvirkne C++ valodā

Apakšvirknes funkcija tiek izmantota, lai apstrādātu tādas virknes darbības kā ieplaisājis() , pievienot () utt . Tas ģenerē jaunu virkni ar tās vērtību, kas inicializēta uz šī objekta apakšvirknes kopiju. Programmā C++ galvenes fails, kas nepieciešams std::substr(), virknes funkcijām ir .

Apakšvirknes funkcijai ir divas vērtības poz un tikai kā argumentu un atgriež jaunizveidotu virknes objektu ar tā vērtību, kas inicializēta uz šī objekta apakšvirknes kopiju. Virknes kopēšana sākas no poz un tiek darīts līdz pasts+len nozīmē [pos, poz+len).

Sintakse:



java derīgi identifikatori
string substr (size_t pos, size_t len) const;>

Parametri:

  • pozīcija: Pirmās kopējamās rakstzīmes pozīcija.
  • tikai: Apakšvirknes garums.
  • size_t: Tas ir neparakstīts integrālais tips.

Atgriešanas vērtība: Tas atgriež virknes objektu.

Piemērs:

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

Izvade
String is: ks>
  • Laika sarežģītība: O(N)
  • Palīgtelpa: O(N)

Vairāk piemēru:

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

ja mēs rakstām: -

  • s.substr(s.begin(),3) => kompilācijas kļūda (jo nevar pārveidot iteratoru par int datu tipu)
  • s.substr(2,3) => llo (trīs burti no 2. rādītāja)
  • s.substr(*s.begin()-s[0],3) => hel (*s.begin() ir ‘h’, tad ‘h’-s[0]=> ‘h’-’h’=0 nozīmē substr(0,3) —– trīs burti no nulles indeksa
  • s.substr(5,1) => ‘’ (drukā tukšu vietu , tas ir 5. rādītājā)
  • s.substr(2,0) => (nav izvadīts) (no otrā indeksa atlasa nulles burtus)

Svarīgi punkti, kas jāatceras

  1. Pirmās rakstzīmes indekss ir 0 (nevis 1).
  2. Ja poz ir vienāds ar virknes garumu, funkcija atgriež tukšu virkni.
  3. Ja poz ir lielāks par virknes garumu, tas izmet out_of_range. Ja tā notiek, virknē izmaiņu nav.
  4. Ja pieprasītā apakšvirkne tikai ir lielāks par virknes lielumu, tad atgrieztā apakšvirkne ir [pozīcija, izmērs ()) .
  5. Ja tikai netiek nodota kā parametrs, tad tiek atgriezta apakšvirkne [pozīcija, izmērs ()).

Apakšvirknes lietojumprogrammas

  • Pēc rakstzīmes iegūstiet apakšvirkni
  • Pirms rakstzīmes iegūstiet apakšvirkni
  • Drukāt visas noteiktās virknes apakšvirknes
  • Visu virknes apakšvirkņu summa, kas apzīmē skaitli
  • Drukājiet visu virknes, kas apzīmē skaitli, apakšvirkņu maksimālo vērtību
  • Drukājiet minimālo vērtību visām virknes apakšvirknēm, kas apzīmē skaitli

Iegūstiet apakšvirkni pēc rakstzīmes

Tajā tiek dota virkne un rakstzīme, un jums ir jādrukā apakšvirkne, kam seko dotā rakstzīme.
Izvelciet visu pēc : virknē suns kaķis .

Piemērs:

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

Izvade
String is: cat>

Laika sarežģītība: O(N)

Palīgtelpa: O(N)

livecricket.is

Kā iegūt apakšvirkni pirms rakstzīmes?

Tajā tiek dota virkne un rakstzīme, un jums ir jādrukā apakšvirkne, kam seko dotā rakstzīme.

Piemērs:

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

Izvade
String is: dog>

Laika sarežģītība: O(N)

Palīgtelpa: O(N)

Kā izdrukāt visas noteiktās virknes apakšvirknes?

Dota virkne kā ievade. Mums ir jāraksta programma, kas izdrukās visas šīs dotās virknes apakšvirknes, kas nav tukšas.

Piemērs:

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

Izvade
a ab abc abcd b bc bcd c cd d>

Laika sarežģītība: O (N3)

Palīgtelpa: O(1)

Drukāt visu virknes apakšvirkņu summu, kas attēlo skaitli

Ņemot vērā veselu skaitli, kas attēlots kā virkne, mums jāiegūst visu iespējamo šīs virknes apakšvirkņu summa.

Piemērs:

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

Izvade
1670>

Laika sarežģītība: O(N3)
Palīgtelpa: O(N)

Drukājiet visu virknes, kas apzīmē skaitli, apakšvirkņu maksimālo vērtību

Ja vesels skaitlis ir attēlots kā virkne, mums ir jāiegūst maksimālais no visām iespējamām dotās virknes apakšvirknēm, kas apzīmē skaitli.

Piemērs:

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

Izvade
823>

Paskaidrojums: Visas apakšvirknes ir {8, 82, 823, 2, 23, 3}, un maksimālā apakšvirknes vērtība ir 823.

Laika sarežģītība: O(N3)

Palīgtelpa: O (N!)

Izdrukājiet minimālo vērtību visām virknes apakšvirknēm, kas apzīmē skaitli

Ja vesels skaitlis ir attēlots kā virkne, mums jāiegūst minimālais no visām iespējamām dotās virknes apakšvirknēm, kas apzīmē skaitli.

Piemērs:

lappuses uz leju tastatūra
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;  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; }>

Izvade
2>

Laika sarežģītība: O(N3)
Palīgtelpa: O (N!)

Citas apakšvirknes lietojumprogrammas

  • Teksta meklēšana: Apakšvirknes tiek izmantotas, lai meklētu vārdus vai frāzes lielākos teksta korpusos. To parasti izmanto meklētājprogrammās, kur lietotājs var ievadīt frāzi vai atslēgvārdu, un programma meklēs visas atbilstības, kas satur šo apakšvirkni.
  • Teksta parsēšana: Apakšvirknes tiek izmantotas teksta parsēšanas algoritmos, lai sadalītu lielākas virknes mazākos gabalos. Piemēram, parsētāju var izmantot, lai no teikuma izvilktu atsevišķus vārdus un saglabātu tos datu struktūrā.
  • Manipulācija ar tekstu: Apakšvirknes tiek izmantotas teksta manipulācijas lietojumprogrammās, lai atrastu un aizstātu noteiktus vārdus vai frāzes lielākos teksta korpusos. To var izmantot, lai veiktu meklēšanas un aizstāšanas uzdevumus vai atjauninātu informāciju dokumentā.
  • Dabiskās valodas apstrāde: Apakšvirknes tiek izmantotas dabiskās valodas apstrādes algoritmos, lai identificētu vārdus un frāzes. To izmanto tādās lietojumprogrammās kā runas atpazīšana, kur algoritmam ir jāidentificē lietotāja izrunātie vārdi.
  • Modeļa atpazīšana: Apakšvirknes tiek izmantotas modeļu atpazīšanas algoritmos, lai identificētu datu modeļus. To var izmantot, lai noteiktu tendences finanšu datos vai atklātu anomālijas attēlos.
  • Paroles drošība: Paroļu pārbaudei tiek izmantotas apakšvirknes. Tas tiek darīts, salīdzinot ievadīto paroli ar saglabāto sākotnējās paroles apakšvirkni. Ja abi sakrīt, parole tiek pārbaudīta. Šo metodi izmanto daudzās lietojumprogrammās, lai palielinātu drošību.