Funkcja substring służy do obsługi operacji na łańcuchach, takich jak pęknięty() , dodać() itp . Generuje nowy ciąg znaków, którego wartość jest inicjowana jako kopia podciągu tego obiektu. W C++ plikiem nagłówkowym wymaganym dla funkcji std::substr() jest plik nagłówkowy .
Funkcja podciągu przyjmuje dwie wartości poz I tylko jako argument i zwraca nowo skonstruowany obiekt typu string z wartością zainicjowaną jako kopia podciągu tego obiektu. Kopiowanie ciągu rozpoczyna się od poz i skończyło się do post+dł oznacza [poz, poz+len).
Składnia:
string substr (size_t pos, size_t len) const;>
Parametry:
- pozycja: Pozycja pierwszego znaku do skopiowania.
- tylko: Długość podciągu.
- rozmiar_t: Jest to typ całkowity bez znaku.
Wartość zwracana: Zwraca obiekt typu string.
Przykład:
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; }> Wyjście
String is: ks>
- Złożoność czasowa: NA)
- Przestrzeń pomocnicza: NA)
Więcej przykładów:
string: ' h e l l o w o r l d ' index: 0 1 2 3 4 5 6 7 8 9 10>
jeśli napiszemy: –
- s.substr(s.begin(),3) => błąd kompilacji (ponieważ nie można przekonwertować iteratora na typ danych int)
- s.substr(2,3) => llo (trzy litery z drugiego indeksu)
- s.substr(*s.begin()-s[0],3) => hel (*s.begin() to „h”, następnie „h”-s[0]=> „h”-„h”=0 oznacza substr(0,3) —– trzy litery od zera
- s.substr(5,1) => „” (drukuje spację, czyli na 5. indeksie)
- s.substr(2,0) => (nie jest wyprowadzany) (wybiera zero liter z drugiego indeksu)
Ważne punkty do zapamiętania
- Indeks pierwszego znaku to 0 (a nie 1).
- Jeśli poz jest równa długości łańcucha, funkcja zwraca pusty ciąg.
- Jeśli poz jest większa niż długość łańcucha, wyrzuca out_of_range. Jeśli tak się stanie, w ciągu nie zostaną wprowadzone żadne zmiany.
- Jeśli żądany podciąg tylko jest większy niż rozmiar ciągu, zwracany podciąg jest większy [pozycja, rozmiar()) .
- Jeśli tylko nie jest przekazywany jako parametr, zwracany jest podciąg [poz, rozmiar()).
Zastosowania podciągu
- Uzyskaj ciąg podrzędny po znaku
- Pobierz podciąg przed znakiem
- Wydrukuj wszystkie podciągi danego ciągu
- Suma wszystkich podciągów ciągu reprezentującego liczbę
- Wydrukuj maksymalną wartość wszystkich podciągów ciągu reprezentującego liczbę
- Wydrukuj minimalną wartość wszystkich podciągów ciągu reprezentującego liczbę
Uzyskaj podciąg po znaku
W tym przypadku podany jest ciąg znaków i znak, po czym należy wydrukować podciąg, po którym następuje podany znak.
Wyodrębnij wszystko po : w sznurku pies Kot .
rzuć obsługę wyjątków w Javie
Przykład:
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; }> Wyjście
String is: cat>
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
Jak uzyskać podciąg przed znakiem?
W tym przypadku podany jest ciąg znaków i znak, po czym należy wydrukować podciąg, po którym następuje podany znak.
Przykład:
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; }> Wyjście
String is: dog>
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
Jak wydrukować wszystkie podciągi danego ciągu?
Biorąc pod uwagę ciąg znaków jako dane wejściowe. Musimy napisać program, który wypisze wszystkie niepuste podciągi danego ciągu.
Przykład:
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; }> Wyjście
a ab abc abcd b bc bcd c cd d>
Złożoność czasowa: NA3)
Przestrzeń pomocnicza: O(1)
Wydrukuj sumę wszystkich podciągów ciągu reprezentującego liczbę
Biorąc pod uwagę liczbę całkowitą przedstawioną jako ciąg znaków, musimy uzyskać sumę wszystkich możliwych podciągów tego ciągu.
Przykład:
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.długość(); for (int i = 0; tj< 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; }> Wyjście
1670>
Złożoność czasowa: NA3)
Przestrzeń pomocnicza: NA)
Wydrukuj maksymalną wartość wszystkich podciągów ciągu reprezentującego liczbę
Biorąc pod uwagę liczbę całkowitą przedstawioną jako ciąg znaków, musimy uzyskać maksimum wszystkich możliwych podciągów danego ciągu, który reprezentuje liczbę.
Przykład:
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; tj< 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; }> Wyjście
823>
Wyjaśnienie: Wszystkie podciągi to { 8, 82, 823, 2, 23, 3 }, a podciąg o maksymalnej wartości to 823.
Złożoność czasowa: NA3)
Przestrzeń pomocnicza: NA!)
Wydrukuj minimalną wartość wszystkich podciągów ciągu reprezentującego liczbę
Biorąc pod uwagę liczbę całkowitą przedstawioną jako ciąg znaków, musimy uzyskać minimum wszystkich możliwych podciągów danego ciągu, który reprezentuje liczbę.
Przykład:
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; tj< 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; }> Wyjście
2>
Złożoność czasowa: NA3)
Przestrzeń pomocnicza: NA!)
Inne zastosowania podciągu
- Wyszukiwanie tekstu: Podciągi służą do wyszukiwania słów lub fraz w większych fragmentach tekstu. Jest to powszechnie stosowane w wyszukiwarkach, gdzie użytkownik może wpisać frazę lub słowo kluczowe, a silnik wyszuka wszelkie dopasowania zawierające ten podciąg.
- Analiza tekstu: Podciągi są używane w algorytmach analizowania tekstu w celu podzielenia większych ciągów na mniejsze części. Na przykład parser może zostać użyty do wyodrębnienia pojedynczych słów ze zdania i przechowywania ich w strukturze danych.
- Manipulacja tekstem: Podciągi są używane w aplikacjach do manipulacji tekstem w celu wyszukiwania i zastępowania określonych słów lub fraz w większych fragmentach tekstu. Można tego używać do wykonywania zadań wyszukiwania i zamiany lub do aktualizowania informacji w dokumencie.
- Przetwarzanie języka naturalnego: Podciągi są używane w algorytmach przetwarzania języka naturalnego do identyfikacji słów i fraz. Jest to wykorzystywane w aplikacjach takich jak rozpoznawanie mowy, gdzie algorytm musi identyfikować słowa wypowiadane przez użytkownika.
- Rozpoznawanie wzorców: Podciągi są używane w algorytmach rozpoznawania wzorców do identyfikowania wzorców w danych. Można to wykorzystać do identyfikacji trendów w danych finansowych lub do wykrywania anomalii w obrazach.
- Bezpieczeństwo hasłem: Podciągi służą do weryfikacji haseł. Odbywa się to poprzez porównanie wprowadzonego hasła z przechowywanym podciągiem oryginalnego hasła. Jeśli oba pasują, hasło zostanie zweryfikowane. Technikę tę wykorzystuje się w wielu aplikacjach w celu zwiększenia bezpieczeństwa.