Osamerkkijonotoimintoa käytetään merkkijonotoimintojen, kuten murtunut () , liitä() , jne . Se luo uuden merkkijonon, jonka arvo on alustettu tämän objektin alimerkkijonon kopioksi. C++:ssa otsikkotiedosto, joka vaaditaan std::substr(), merkkijonofunktioille .
Osamerkkijonofunktio saa kaksi arvoa pos ja vain argumenttina ja palauttaa äskettäin rakennetun merkkijonoobjektin, jonka arvo on alustettu tämän objektin alimerkkijonon kopioksi. Merkkijonon kopiointi alkaa pos ja tehdään siihen asti post+len tarkoittaa [pos, pos+len).
Syntaksi:
string substr (size_t pos, size_t len) const;>
Parametrit:
- pos: Ensimmäisen kopioitavan merkin sijainti.
- vain: Alimerkkijonon pituus.
- koko_t: Se on allekirjoittamaton integraalityyppi.
Palautusarvo: Se palauttaa merkkijonoobjektin.
Esimerkki:
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; }> Lähtö
String is: ks>
- Aika monimutkaisuus: PÄÄLLÄ)
- Aputila: PÄÄLLÄ)
Lisää esimerkkejä:
string: ' h e l l o w o r l d ' index: 0 1 2 3 4 5 6 7 8 9 10>
jos kirjoitamme: -
kuinka ketjuttaa merkkijonoja javassa
- s.substr(s.begin(),3) => käännösvirhe (koska iteraattoria ei voi muuntaa int-tietotyypiksi)
- s.substr(2,3) => llo (kolme kirjainta toisesta hakemistosta)
- s.substr(*s.begin()-s[0],3) => hel (*s.begin() on 'h', sitten 'h'-s[0]=> 'h'-'h'=0 tarkoittaa substr(0,3) - kolme kirjainta nollasta indeksistä
- s.substr(5,1) => ‘’ (tulostaa tyhjän tilan , eli 5. hakemistossa)
- s.substr(2,0) => (ei tuloste) (valitsee nollaa kirjainta toisesta indeksistä)
Tärkeitä huomioita
- Ensimmäisen merkin indeksi on 0 (ei 1).
- Jos pos on yhtä suuri kuin merkkijonon pituus, funktio palauttaa tyhjän merkkijonon.
- Jos pos on suurempi kuin merkkijonon pituus, se heittää out_of_range. Jos näin tapahtuu, merkkijonossa ei ole muutoksia.
- Jos pyydetty alimerkkijono vain on suurempi kuin merkkijonon koko, niin palautettu alimerkkijono on [pos, koko()) .
- Jos vain ei välitetä parametrina, niin palautettu alimerkkijono on [pos, koko()).
Alimerkkijonon sovellukset
- Hanki alimerkkijono merkin jälkeen
- Hanki alimerkkijono ennen merkkiä
- Tulosta tietyn merkkijonon kaikki alimerkkijonot
- Lukua edustavan merkkijonon kaikkien osamerkkijonojen summa
- Tulosta lukua edustavan merkkijonon kaikkien osamerkkijonojen enimmäisarvo
- Tulosta numeroa edustavan merkkijonon kaikkien osamerkkijonojen vähimmäisarvo
Hanki alimerkkijono merkin jälkeen
Tässä annetaan merkkijono ja merkki, ja sinun on tulostettava alimerkkijono, jota seuraa annettu merkki.
Pura kaikki sen jälkeen : merkkijonossa koira kissa .
Esimerkki:
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; }> Lähtö
String is: cat>
Aika monimutkaisuus: PÄÄLLÄ)
Aputila: PÄÄLLÄ)
taulukot java
Kuinka saada osamerkkijono ennen merkkiä?
Tässä annetaan merkkijono ja merkki, ja sinun on tulostettava alimerkkijono, jota seuraa annettu merkki.
Esimerkki:
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; }> Lähtö
String is: dog>
Aika monimutkaisuus: PÄÄLLÄ)
Aputila: PÄÄLLÄ)
Kuinka tulostaa tietyn merkkijonon kaikki alimerkkijonot?
Annettu syötteeksi merkkijono. Meidän on kirjoitettava ohjelma, joka tulostaa kaikki kyseisen merkkijonon ei-tyhjät osamerkkijonot.
Esimerkki:
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; }> Lähtö
a ab abc abcd b bc bcd c cd d>
Aika monimutkaisuus: PÄÄLLÄ3)
Aputila: O(1)
Tulosta lukua edustavan merkkijonon kaikkien osamerkkijonojen summa
Kun kokonaisluku esitetään merkkijonona, meidän on saatava tämän merkkijonon kaikkien mahdollisten osamerkkijonojen summa.
Esimerkki:
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(); for (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; }> Lähtö
1670>
Aika monimutkaisuus: PÄÄLLÄ3)
Aputila: PÄÄLLÄ)
Tulosta numeroa edustavan merkkijonon kaikkien osamerkkijonojen enimmäisarvo
Kun kokonaisluku esitetään merkkijonona, meidän on saatava suurin mahdollinen lukua edustavan merkkijonon osamerkkijono.
Esimerkki:
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; 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; }> Lähtö
823>
Selitys: Kaikki osamerkkijonot ovat { 8, 82, 823, 2, 23, 3 } ja enimmäisarvo alimerkkijono on 823.
Aika monimutkaisuus: PÄÄLLÄ3)
Aputila: PÄÄLLÄ!)
Tulosta numeroa edustavan merkkijonon kaikkien osamerkkijonojen vähimmäisarvo
Kun kokonaisluku esitetään merkkijonona, meidän on saatava pienin mahdollinen lukua edustavan merkkijonon kaikista mahdollisista osamerkkijonoista.
Esimerkki:
topologiatC++
// 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; 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; }> Lähtö
2>
Aika monimutkaisuus: PÄÄLLÄ3)
Aputila: PÄÄLLÄ!)
Muut alimerkkijonon sovellukset
- Tekstihaku: Alimerkkijonoja käytetään sanojen tai lauseiden etsimiseen suuremmista tekstikappaleista. Tätä käytetään yleisesti hakukoneissa, joissa käyttäjä saattaa kirjoittaa lauseen tai avainsanan, ja kone etsii kaikki osumat, jotka sisältävät kyseisen alimerkkijonon.
- Tekstin jäsentäminen: Alimerkkijonoja käytetään tekstin jäsennysalgoritmeissa suurempien merkkijonojen pilkkomiseen pienemmiksi paloiksi. Esimerkiksi jäsentimen avulla voidaan erottaa yksittäisiä sanoja lauseesta ja tallentaa ne tietorakenteeseen.
- Tekstin käsittely: Alimerkkijonoja käytetään tekstinkäsittelysovelluksissa tiettyjen sanojen tai lauseiden etsimiseen ja korvaamiseen suuremmissa tekstiosissa. Tätä voidaan käyttää haku- ja korvaustehtävien suorittamiseen tai asiakirjan tietojen päivittämiseen.
- Luonnollisen kielen käsittely: Osamerkkijonoja käytetään luonnollisen kielen käsittelyalgoritmeissa sanojen ja lauseiden tunnistamiseen. Tätä käytetään sovelluksissa, kuten puheentunnistuksessa, jossa algoritmin on tunnistettava käyttäjän puhumat sanat.
- Hahmontunnistus: Alimerkkijonoja käytetään hahmontunnistusalgoritmeissa datan kuvioiden tunnistamiseen. Tätä voidaan käyttää taloustietojen trendien tunnistamiseen tai kuvien poikkeavuuksien havaitsemiseen.
- Salasanasuojaus: Alimerkkijonoja käytetään salasanojen vahvistamiseen. Tämä tehdään vertaamalla annettua salasanaa alkuperäisen salasanan tallennettuun osamerkkijonoon. Jos nämä kaksi täsmäävät, salasana vahvistetaan. Tätä tekniikkaa käytetään monissa sovelluksissa turvallisuuden lisäämiseksi.