C++ :: Aufgabe #366 :: Lösung #1

1 Lösung Lösung öffentlich
#366

Reihenfolgeabhängige Teilsequenz(en)

Anfänger - C++ von JKooP - 10.05.2021 um 19:10 Uhr
Gegeben ist ein String (Text) der ausschließlich aus Kleinbuchstaben besteht.
Es soll überprüft werden, ob eine Sequenz - auch in Teilen - reihenfolgeabhängig im gegebenen String vorhanden ist.
Eine Teilsequenz kann auch aus nur einem einzelnen Zeichen bestehen.
Die Sequenz muss immer in der Gesamtheit überprüft werden (nicht nur Teile der Sequenz).

Beispiele:
Text = "abcdefg"
Sequenz ="ace"
Lösung: true; "abcdefg"

Text = "abcdefg"
Sequenz = "aec"
Lösung: false; alle Zeichen vorhanden, aber nicht in der richtigen Reihenfolge

Text = "abcdefg"
Sequenz = "atg"
Lösung: false; "t" nicht vorhanden

Schreibe eine Funktion/Methode, die für obige Aufgabenstellung als Ergebnis true/false liefert.

Viel Spaß
#1
vote_ok
von JKooP (18090 Punkte) - 20.07.2021 um 08:48 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>
#include <string>
#include <vector>
#include <tuple>

bool is_subsequence(std::string text, std::string sequence) {
    for (const auto& i : sequence) {
        auto pos{ find(text.begin(), text.end(), i) };
        if (pos != text.end())
            text = text.substr(pos - text.begin());
        else
            return false;
    }
    return true;
}

int main()
{
    std::vector<std::tuple<std::string, std::string>>v{
        {"abcdefg", "ace"}, {"abcdefg", "aec"}, {"abcdefg", "atg"} };
 
    for (const auto& i : v) {
        std::cout << (is_subsequence(std::get<0>(i), std::get<1>(i)) ? "wahr" : "falsch") << "\n";
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1971432

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.