logo

Podniz v C++

Funkcija substring se uporablja za obdelavo nizovnih operacij, kot je počen() , pripni() itd . Ustvari nov niz z inicializirano vrednostjo v kopijo podniza tega objekta. V C++ je datoteka glave, ki je potrebna za std::substr(), nizovne funkcije .

Funkcija podniz ima dve vrednosti poz in samo kot argument in vrne na novo zgrajen objekt niza z njegovo vrednostjo, inicializirano v kopijo podniza tega objekta. Kopiranje niza se začne od poz in se izvaja do post+len pomeni [pos, pos+len).

Sintaksa:



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

Parametri:

  • položaj: Položaj prvega znaka za kopiranje.
  • samo: Dolžina podniza.
  • velikost_t: Je nepredznačeni integralni tip.

Povratna vrednost: Vrne objekt niza.

primer:

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

Izhod
String is: ks>
  • Časovna zahtevnost: O(N)
  • Pomožni prostor: O(N)

Več primerov:

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

če napišemo: –

začne se z javo
  • s.substr(s.begin(),3) => napaka pri prevajanju (ker iteratorja ni mogoče pretvoriti v podatkovni tip int)
  • s.substr(2,3) => llo (tri črke iz 2. indeksa)
  • s.substr(*s.begin()-s[0],3) => hel (*s.begin() je 'h' potem 'h'-s[0]=> 'h'-'h'=0 pomeni substr(0,3) —– tri črke od ničelnega indeksa
  • s.substr(5,1) => ‘ ‘ (natisne prazen prostor, to je na 5. indeksu)
  • s.substr(2,0) => (ni izhoda) (izbere nič črk iz drugega indeksa)

Pomembne točke, ki si jih morate zapomniti

  1. Indeks prvega znaka je 0 (ne 1).
  2. če poz je enaka dolžini niza, funkcija vrne prazen niz.
  3. če poz je večja od dolžine niza, vrže out_of_range. Če se to zgodi, v nizu ni sprememb.
  4. Če zahtevani podniz samo je večja od velikosti niza, potem je vrnjeni podniz [pos, velikost()) .
  5. če samo ni posredovan kot parameter, potem je vrnjeni podniz [pos, velikost()).

Uporaba podniza

  • Pridobite podniz za znakom
  • Pridobite podniz pred znakom
  • Natisnite vse podnize danega niza
  • Vsota vseh podnizov niza, ki predstavlja število
  • Natisnite največjo vrednost vseh podnizov niza, ki predstavlja število
  • Natisnite najmanjšo vrednost vseh podnizov niza, ki predstavlja število

Pridobite podniz za znakom

V tem sta podana niz in znak in natisniti morate podniz, ki mu sledi dani znak.
Ekstrahirajte vse po : v nizu pes:mačka .

primer:

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

Izhod
String is: cat>

Časovna zahtevnost: O(N)

Pomožni prostor: O(N)

naključno število gen java

Kako pridobiti podniz pred znakom?

V tem sta podana niz in znak in natisniti morate podniz, ki mu sledi dani znak.

primer:

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

Izhod
String is: dog>

Časovna zahtevnost: O(N)

Pomožni prostor: O(N)

Kako natisniti vse podnize danega niza?

Podan je niz kot vhod. Napisati moramo program, ki bo izpisal vse neprazne podnize danega niza.

primer:

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

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

Časovna zahtevnost: O( N3)

Pomožni prostor: O(1)

Natisni vsoto vseh podnizov niza, ki predstavlja število

Če je podano celo število, predstavljeno kot niz, moramo dobiti vsoto vseh možnih podnizov tega niza.

primer:

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

Izhod
1670>

Časovna zapletenost: O(N3)
Pomožni prostor: O(N)

Natisnite največjo vrednost vseh podnizov niza, ki predstavlja število

Če je dano celo število, predstavljeno kot niz, moramo pridobiti največje število vseh možnih podnizov danega niza, ki predstavlja število.

primer:

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

Izhod
823>

Pojasnilo: Vsi podnizi so { 8, 82, 823, 2, 23, 3 }, podniz z največjo vrednostjo pa je 823.

Časovna zahtevnost: O(N3)

Pomožni prostor: O(N!)

Natisnite najmanjšo vrednost vseh podnizov niza, ki predstavlja število

Če je dano celo število, predstavljeno kot niz, moramo pridobiti najmanj vseh možnih podnizov danega niza, ki predstavlja število.

primer:

java mvc
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;  za (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; }>

Izhod
2>

Časovna zahtevnost: O(N3)
Pomožni prostor: O(N!)

Druge aplikacije podniza

  • Iskanje besedila: Podnizi se uporabljajo za iskanje besed ali besednih zvez v večjih delih besedila. To se običajno uporablja v iskalnikih, kjer lahko uporabnik vnese besedno zvezo ali ključno besedo in motor bo poiskal vsa ujemanja, ki vsebujejo ta podniz.
  • Razčlenjevanje besedila: Podnizi se uporabljajo v algoritmih za razčlenjevanje besedila za razčlenitev večjih nizov na manjše dele. Na primer, razčlenjevalnik se lahko uporabi za ekstrahiranje posameznih besed iz stavka in njihovo shranjevanje v podatkovno strukturo.
  • Manipulacija besedila: Podnizi se uporabljajo v aplikacijah za obdelavo besedila za iskanje in zamenjavo določenih besed ali besednih zvez v večjih delih besedila. To lahko uporabite za izvajanje nalog iskanja in zamenjave ali za posodobitev informacij v dokumentu.
  • Obdelava naravnega jezika: Podnizi se uporabljajo v algoritmih za obdelavo naravnega jezika za prepoznavanje besed in fraz. To se uporablja v aplikacijah, kot je prepoznavanje govora, kjer mora algoritem identificirati besede, ki jih izgovori uporabnik.
  • Prepoznavanje vzorcev: Podnizi se uporabljajo v algoritmih za prepoznavanje vzorcev za prepoznavanje vzorcev v podatkih. To je mogoče uporabiti za prepoznavanje trendov v finančnih podatkih ali za odkrivanje anomalij na slikah.
  • Varnost gesla: Podnizi se uporabljajo za preverjanje gesel. To se naredi tako, da se vneseno geslo primerja s shranjenim podnizom izvirnega gesla. Če se ujemata, je geslo preverjeno. Ta tehnika se uporablja v številnih aplikacijah za povečanje varnosti.