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
- Indeks prvega znaka je 0 (ne 1).
- če poz je enaka dolžini niza, funkcija vrne prazen niz.
- če poz je večja od dolžine niza, vrže out_of_range. Če se to zgodi, v nizu ni sprememb.
- Če zahtevani podniz samo je večja od velikosti niza, potem je vrnjeni podniz [pos, velikost()) .
- č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 mvcC++
// 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.