De substring-functie wordt gebruikt voor het afhandelen van stringbewerkingen zoals gebarsten() , toevoegen() , enz . Het genereert een nieuwe string waarvan de waarde is geïnitialiseerd op een kopie van een substring van dit object. In C++ is het headerbestand dat vereist is voor std::substr(), stringfuncties .
De substringfunctie heeft twee waarden pos En alleen als argument en retourneert een nieuw geconstrueerd stringobject waarvan de waarde is geïnitialiseerd naar een kopie van een substring van dit object. Het kopiëren van een tekenreeks begint vanaf pos en is klaar tot post+len betekent [pos, pos+len).
Syntaxis:
string substr (size_t pos, size_t len) const;>
Parameters:
- pos: Positie van het eerste teken dat moet worden gekopieerd.
- alleen: Lengte van de subtekenreeks.
- maat_t: Het is een niet-ondertekend integraaltype.
Winstwaarde: Het retourneert een stringobject.
Voorbeeld:
vervang de tekenreeks in tekenreeksjavaC++
// 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; }> Uitvoer
String is: ks>
- Tijdcomplexiteit: OP)
- Hulpruimte: OP)
Meer voorbeelden:
string: ' h e l l o w o r l d ' index: 0 1 2 3 4 5 6 7 8 9 10>
als we schrijven: –
wat is 10 van de 100
- s.substr(s.begin(),3) => compilatiefout (omdat een iterator niet naar een int-datatype kan worden geconverteerd)
- s.substr(2,3) => llo (drie letters uit de 2e index)
- s.substr(*s.begin()-s[0],3) => hel (*s.begin() is ‘h’ en dan ‘h’-s[0]=> ‘h’-‘h’=0 betekent substr(0,3) —– drie letters vanaf de nulde index
- s.substr(5,1) => ‘ ‘ (drukt lege ruimte af, dat wil zeggen op de 5e index)
- s.substr(2,0) => (niet uitgevoerd) (selecteert nul letters uit de tweede index)
Belangrijke punten om te onthouden
- De index van het eerste teken is 0 (niet 1).
- Als pos gelijk is aan de tekenreekslengte, retourneert de functie een lege tekenreeks.
- Als pos groter is dan de tekenreekslengte, gooit het out_of_range. Als dit gebeurt, zijn er geen wijzigingen in de tekenreeks.
- Als de gevraagde subtekenreeks alleen groter is dan de grootte van een tekenreeks, dan is de geretourneerde subtekenreeks gelijk [pos, grootte()) .
- Als alleen wordt niet doorgegeven als parameter, maar de geretourneerde subtekenreeks is wel [pos, grootte()).
Toepassingen van substring
- Haal een subtekenreeks op na een teken
- Verkrijg een sub-string vóór een personage
- Druk alle substrings van een bepaalde string af
- Som van alle subtekenreeksen van een tekenreeks die een getal vertegenwoordigt
- Druk de maximale waarde af van alle subtekenreeksen van een tekenreeks die een getal vertegenwoordigt
- Druk de minimumwaarde af van alle subtekenreeksen van een tekenreeks die een getal vertegenwoordigt
Haal een subtekenreeks op na een teken
Hierin worden een string en een teken opgegeven en moet je de substring afdrukken, gevolgd door het opgegeven teken.
Pak alles uit na de : in het touwtje hond kat .
Voorbeeld:
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; }> Uitvoer
String is: cat>
Tijdcomplexiteit: OP)
Hulpruimte: OP)
Hoe krijg ik een substring vóór een personage?
Hierin worden een string en een teken opgegeven en moet je de substring afdrukken, gevolgd door het opgegeven teken.
Voorbeeld:
prioriteit van de Java-operatorC++
// 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; }> Uitvoer
String is: dog>
Tijdcomplexiteit: OP)
Hulpruimte: OP)
Hoe print ik alle substrings van een gegeven string?
Gegeven een string als invoer. We moeten een programma schrijven dat alle niet-lege substrings van die gegeven string afdrukt.
Voorbeeld:
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; }> Uitvoer
a ab abc abcd b bc bcd c cd d>
Tijdcomplexiteit: OP3)
tostring-methode java
Hulpruimte: O(1)
Print de som van alle substrings van een string die een getal vertegenwoordigt
Gegeven een geheel getal dat wordt weergegeven als een string, moeten we de som krijgen van alle mogelijke substrings van deze string.
Voorbeeld:
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.lengte(); voor (int i = 0; ik< 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; }> Uitvoer
1670>
Tijdcomplexiteit: OP3)
Hulpruimte: OP)
Druk de maximale waarde af van alle subtekenreeksen van een tekenreeks die een getal vertegenwoordigt
Gegeven een geheel getal dat wordt weergegeven als een string, moeten we het maximum van alle mogelijke substrings van de gegeven string verkrijgen die een getal vertegenwoordigt.
Voorbeeld:
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; voor (int i = 0; ik< 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; }> Uitvoer
823>
Uitleg: Alle substrings zijn { 8, 82, 823, 2, 23, 3 } en de maximale waarde van de substring is 823.
Tijdcomplexiteit: OP3)
Hulpruimte: OP!)
Druk de minimumwaarde af van alle subtekenreeksen van een tekenreeks die een getal vertegenwoordigt
Gegeven een geheel getal dat wordt weergegeven als een string, moeten we het minimum van alle mogelijke substrings van de gegeven string verkrijgen die een getal vertegenwoordigt.
Voorbeeld:
gratis versus gratisC++
// 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; voor (int i = 0; ik< 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; }> Uitvoer
2>
Tijdcomplexiteit: OP3)
Hulpruimte: OP!)
Andere toepassingen van Substring
- Tekst zoeken: Subtekenreeksen worden gebruikt om naar woorden of zinsdelen in grotere tekstblokken te zoeken. Dit wordt vaak gebruikt in zoekmachines, waar een gebruiker een zin of trefwoord kan typen en de motor zal zoeken naar overeenkomsten die die subtekenreeks bevatten.
- Tekst parseren: Substrings worden gebruikt in algoritmen voor het parseren van tekst om grotere strings in kleinere stukken op te splitsen. Een parser kan bijvoorbeeld worden gebruikt om individuele woorden uit een zin te extraheren en deze in een datastructuur op te slaan.
- Tekstmanipulatie: Subtekenreeksen worden gebruikt in tekstmanipulatietoepassingen om bepaalde woorden of zinsdelen in grotere tekstlichamen te vinden en te vervangen. Dit kan worden gebruikt om zoek- en vervangtaken uit te voeren, of om informatie in een document bij te werken.
- Natuurlijke taalverwerking: Substrings worden gebruikt in algoritmen voor natuurlijke taalverwerking om woorden en zinsdelen te identificeren. Dit wordt gebruikt in toepassingen zoals spraakherkenning, waarbij het algoritme woorden moet identificeren die door een gebruiker worden gesproken.
- Patroonherkenning: Substrings worden gebruikt in patroonherkenningsalgoritmen om patronen in gegevens te identificeren. Dit kan worden gebruikt om trends in financiële gegevens te identificeren of om afwijkingen in afbeeldingen te detecteren.
- Wachtwoordbeveiliging: Substrings worden gebruikt om wachtwoorden te verifiëren. Dit wordt gedaan door het ingevoerde wachtwoord te vergelijken met een opgeslagen subreeks van het oorspronkelijke wachtwoord. Als de twee overeenkomen, wordt het wachtwoord geverifieerd. Deze techniek wordt in veel toepassingen gebruikt om de veiligheid te vergroten.