La funció de subcadena s'utilitza per gestionar operacions de cadena com ara esquerdat() , afegir() , etc . Genera una nova cadena amb el seu valor inicialitzat en una còpia d'una subcadena d'aquest objecte. En C++, el fitxer de capçalera que és necessari per a les funcions de cadena std::substr(). .
La funció de subcadena pren dos valors pos i només com a argument i retorna un objecte de cadena recentment construït amb el seu valor inicialitzat a una còpia d'una subcadena d'aquest objecte. La còpia de la cadena comença des de pos i es fa fins post+len significa [pos, pos+len).
Sintaxi:
string substr (size_t pos, size_t len) const;>
Paràmetres:
- pos: Posició del primer caràcter a copiar.
- només: Longitud de la subcadena.
- mida_t: És un tipus integral sense signar.
Valor de retorn: Retorna un objecte de cadena.
Exemple:
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; }> Sortida
String is: ks>
- Complexitat temporal: O(N)
- Espai auxiliar: O(N)
Més exemples:
string: ' h e l l o w o r l d ' index: 0 1 2 3 4 5 6 7 8 9 10>
si escrivim: -
factorial en java
- s.substr(s.begin(),3) => error de compilació (perquè no es pot convertir un iterador en un tipus de dades int)
- s.substr(2,3) => llo (tres lletres del 2n índex)
- s.substr(*s.begin()-s[0],3) => hel (*s.begin() és 'h' i després 'h'-s[0] => 'h'-'h'=0 significa substr(0,3) —– tres lletres de l'índex zero
- s.substr(5,1) => ‘ ‘ (imprimeix espai en blanc, és a dir, al cinquè índex)
- s.substr(2,0) => (no sortida) (selecciona zero lletres del segon índex)
Punts importants a recordar
- L'índex del primer caràcter és 0 (no 1).
- Si pos és igual a la longitud de la cadena, la funció retorna una cadena buida.
- Si pos és més gran que la longitud de la cadena, llança fora de l'interval. Si això passa, no hi ha canvis a la cadena.
- Si la subcadena sol·licitada només és més gran que la mida d'una cadena, llavors la subcadena retornada és [pos, mida ()) .
- Si només no es passa com a paràmetre, llavors es retorna la subcadena [pos, mida ()).
Aplicacions de la subcadena
- Obteniu una subcadena després d'un caràcter
- Obteniu una subcadena abans d'un caràcter
- Imprimeix totes les subcadenes d'una cadena determinada
- Suma de totes les subcadenes d'una cadena que representen un nombre
- Imprimeix el valor màxim de totes les subcadenes d'una cadena que representen un nombre
- Imprimeix el valor mínim de totes les subcadenes d'una cadena que representen un nombre
Obteniu una subcadena després d'un personatge
En això, es donen una cadena i un caràcter i heu d'imprimir la subcadena seguida del caràcter donat.
Extreu-ho tot després de : a la corda gos gat .
Exemple:
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; }> Sortida
String is: cat>
Complexitat temporal: O(N)
Espai auxiliar: O(N)
llista java a matriu
Com obtenir una subcadena abans d'un caràcter?
En això, es donen una cadena i un caràcter i heu d'imprimir la subcadena seguida del caràcter donat.
Exemple:
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; }> Sortida
String is: dog>
Complexitat temporal: O(N)
Espai auxiliar: O(N)
Com imprimir totes les subcadenes d'una cadena donada?
Donada una cadena com a entrada. Hem d'escriure un programa que imprimeixi totes les subcadenes no buides d'aquesta cadena donada.
Exemple:
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; }> Sortida
a ab abc abcd b bc bcd c cd d>
Complexitat temporal: O(N3)
Espai auxiliar: O(1)
Imprimeix la suma de totes les subcadenes d'una cadena que representa un nombre
Donat un nombre enter representat com una cadena, hem d'obtenir la suma de totes les subcadenes possibles d'aquesta cadena.
Exemple:
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.longitud(); per (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; }> Sortida
1670>
Complexitat temporal: O(N3)
Espai auxiliar: O(N)
Imprimeix el valor màxim de totes les subcadenes d'una cadena que representa un nombre
Donat un nombre enter representat com una cadena, hem d'obtenir el màxim de totes les subcadenes possibles de la cadena donada que representi un nombre.
Exemple:
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; per (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; }> Sortida
823>
Explicació: Totes les subcadenes són { 8, 82, 823, 2, 23, 3 } i la subcadena de valor màxim és 823.
Complexitat temporal: O(N3)
Espai auxiliar: O (N!)
Imprimeix el valor mínim de totes les subcadenes d'una cadena que representa un nombre
Donat un nombre enter representat com una cadena, hem d'obtenir el mínim de totes les subcadenes possibles de la cadena donada que representi un nombre.
Exemple:
desactivant el mode de desenvolupadorC++
// 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; per (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; }> Sortida
2>
Complexitat temporal: O(N3)
Espai auxiliar: O (N!)
Altres aplicacions de la subcadena
- Cerca de text: Les subcadenes s'utilitzen per cercar paraules o frases en cossos de text més grans. Això s'utilitza habitualment als motors de cerca, on un usuari pot escriure una frase o paraula clau i el motor cercarà qualsevol coincidència que contingui aquesta subcadena.
- Anàlisi de text: Les subcadenes s'utilitzen en algorismes d'anàlisi de text per dividir les cadenes més grans en trossos més petits. Per exemple, es pot utilitzar un analitzador per extreure paraules individuals d'una frase i emmagatzemar-les en una estructura de dades.
- Manipulació de text: Les subcadenes s'utilitzen en aplicacions de manipulació de text per trobar i substituir determinades paraules o frases en cossos de text més grans. Això es pot utilitzar per realitzar tasques de cerca i substitució, o per actualitzar la informació d'un document.
- Processament del llenguatge natural: Les subcadenes s'utilitzen en algorismes de processament del llenguatge natural per identificar paraules i frases. S'utilitza en aplicacions com el reconeixement de veu, on l'algoritme ha d'identificar les paraules pronunciades per un usuari.
- Reconeixement de patró: Les subcadenes s'utilitzen en algorismes de reconeixement de patrons per identificar patrons a les dades. Això es pot utilitzar per identificar tendències en dades financeres o per detectar anomalies en imatges.
- Seguretat de contrasenya: Les subcadenes s'utilitzen per verificar les contrasenyes. Això es fa comparant la contrasenya introduïda amb una subcadena emmagatzemada de la contrasenya original. Si les dues coincideixen, la contrasenya es verifica. Aquesta tècnica s'utilitza en moltes aplicacions per augmentar la seguretat.