logo

Podciąg w C++

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

  1. Indeks pierwszego znaku to 0 (a nie 1).
  2. Jeśli poz jest równa długości łańcucha, funkcja zwraca pusty ciąg.
  3. 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.
  4. Jeśli żądany podciąg tylko jest większy niż rozmiar ciągu, zwracany podciąg jest większy [pozycja, rozmiar()) .
  5. 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.