ForHosting KIT · Text & KI

LCS-Rechner

Finden Sie die längste Zeichenfolge, die zwei Zeichenketten in derselben Reihenfolge teilen, auch mit Lücken: ABCBDAB und BDCABA teilen 4, etwa BCBA. Sie erhalten die Länge und eine gültige Teilsequenz, die Sie mit bloßem Auge prüfen können. Kostenlos in Ihrem Browser.

  • Kostenlos
  • Läuft in Ihrem Browser
  • Ohne Anmeldung
  • Ihre Daten bleiben auf Ihrem Gerät
Nutzen Sie es über WebAPIE-MailTelegramApp bald
Wenn Sie eingeben
Zeichenfolge A
ABCBDAB
Zeichenfolge B
BDCABA
Erhalten Sie
Len a
7
Len b
6
Länge
4
Teilfolge
BCBA

Das Problem der längsten gemeinsamen Teilsequenz fragt nach der längsten Zeichenfolge, die in derselben Reihenfolge in zwei Eingabezeichenketten vorkommt, ohne Kontinuität zu verlangen. Es ist das dynamische-Programmierungs-Fundament zeilenorientierter Diff-Werkzeuge, Merge-Hilfen in Versionskontrollsystemen, Plagiatserkenner, die Rauschen durch Umordnung tolerieren, und des biologischen Sequenzvergleichs, wenn Einfügungen und Löschungen wichtiger sind als exakte Teilstrings. Dieser Rechner für die längste gemeinsame Teilsequenz nimmt zwei Zeichenketten entgegen, füllt eine klassische Längentabelle in linearer Zeit relativ zum Produkt der Längen, rekonstruiert ein gültiges LCS per Backtracking und liefert sowohl die numerische Länge als auch die Teilsequenz-Zeichenkette. Leere Eingaben sind gültig und ergeben Länge null.

Was eine längste gemeinsame Teilsequenz ist (und was nicht)

Eine Teilsequenz einer Zeichenkette ist jede Zeichenkette, die entsteht, wenn man null oder mehr Zeichen löscht, ohne die Verbliebenen umzuordnen. Eine gemeinsame Teilsequenz zweier Zeichenketten ist eine Zeichenkette, die Teilsequenz beider ist. Eine längste gemeinsame Teilsequenz, oder LCS, ist jede gemeinsame Teilsequenz, deren Länge unter allen gemeinsamen Teilsequenzen maximal ist.

Anders als ein längster gemeinsamer Teilstring muss ein LCS keinen zusammenhängenden Block in einer der Eingaben belegen: das klassische Paar ABCBDAB und BDCABA lässt mehrere LCS-Zeichenketten der Länge vier zu, etwa BCBA und BDAB, je nachdem welche Gleichstände die Rekonstruktion wählt. Diff-Algorithmen und DNA-Alignment-Werkzeuge nutzen diese nicht-kontinuierliche Vorstellung, weil echte Edits Symbole einfügen und löschen statt nur ein festes Fenster zu schieben. Die Länge eines LCS ist ein nützlicher Ähnlichkeitswert; die rekonstruierten Zeichen helfen, wenn Sie neben dem Score ein explizites Alignment-Skelett zeigen möchten.

Er liefert nicht jedes mögliche LCS, Edit-Skripte oder Ähnlichkeitsprozente—das sind getrennte Probleme auf derselben DP-Tabellenidee.

Wo die gemeinsame Teilsequenz wirklich hilft

Informatikkurse und Online-Judge-Systeme brauchen ein Referenzorakel, das für beliebige kurze Zeichenketten eine korrekte Länge und eine gültige Teilsequenz liefert, ohne dass Studierende Lösungen in eine volle IDE einfügen. Diff-nahe Produktfunktionen—Änderungszusammenfassungen, Merge-Konflikt-Hinweise, Logzeilen-Alignment—wollen oft die LCS-Länge als günstiges Ähnlichkeitssignal vor einem schwereren Edit-Distance-Durchlauf. Bioinformatik-Lehrdemos nutzen Spielzeug-DNA-Alphabetzeichenketten (A, C, G, T), um zu zeigen, wie Einfügungen und Löschungen trotzdem ein langes gemeinsames Gerüst lassen.

Halten Sie Zeichenketten unter der Längengrenze, fixieren Sie die rekonstruierte Teilsequenz in Tests, wenn es Ihnen wichtig ist, welche von mehreren gleich langen Antworten Sie erhalten, und Sie bekommen reproduzierbare LCS-Ergebnisse ohne eigene Numerikbibliothek.

Algorithmen-Hausaufgaben und Vorlesungsdemos

Geben Sie Studierenden zwei kurze Zeichenketten und prüfen Sie sowohl die LCS-Länge als auch, dass die zurückgegebene Teilsequenz wirklich der Reihe nach in jeder Eingabe vorkommt.

LMS- und Wettbewerbs-Autobewertung

Bewerten Sie DP-Aufgaben mit einem deterministischen Orakel, das ungültige Eingaben ablehnt und nie eine längere Teilsequenz erfindet, als die klassische Tabelle erlaubt.

Diff- und Sequenzähnlichkeits-Vorchecks

Bewerten Sie gemeinsame geordnete Struktur zwischen zwei Texten oder Spielzeug-DNA-Zeichenketten, bevor Sie eine schwerere Edit-Distance- oder Alignment-Pipeline starten.

Ist LCS dasselbe wie der längste gemeinsame Teilstring?

Nein. Ein Teilstring muss zusammenhängend sein; eine Teilsequenz darf Zeichen überspringen. Dieser Rechner löst das Teilsequenzproblem mit klassischer dynamischer Programmierung.

Welche Längengrenzen und Regeln für leere Zeichenketten gelten?

Jede Zeichenkette darf höchstens 500 Zeichen haben. Leere Zeichenketten sind erlaubt und erzeugen length 0 mit leerer Teilsequenz.

Warum können zwei Zeichenketten mehrere längste gemeinsame Teilsequenzen haben?

Weil Gleichstände häufig sind. ABCBDAB und BDCABA teilen mehrere der Länge 4, etwa BCBA und BDAB. Der Rechner liefert eine davon und löst Gleichstände immer gleich auf, daher ergibt dasselbe Paar stets dieselbe Antwort.

Wofür ist die Länge der LCS nützlich?

Sie dient als günstiges Ähnlichkeitsmaß. Änderungszusammenfassungen, Hinweise beim Zusammenführen und das Ausrichten von Logzeilen können sie vor einer aufwendigeren Distanzberechnung nutzen, und Lehrbeispiele mit DNA-Buchstaben zeigen, wie ein langes gemeinsames Rückgrat erhalten bleibt.

Wie prüfe ich, ob die gelieferte Teilsequenz stimmt?

Prüfen Sie, ob ihre Zeichen in beiden Zeichenketten in derselben Reihenfolge vorkommen, wobei andere übersprungen werden dürfen, und ob die Länge zur angegebenen Zahl passt. BCBA besteht in ABCBDAB und in BDCABA, genau so werden Antworten bewertet.

Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.

POSThttps://api.kit.forhosting.com/dev/longest-common-subsequence

Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.

curl -X POST https://api.kit.forhosting.com/dev/longest-common-subsequence \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"string_a":"ABCBDAB","string_b":"BDCABA"}'
{
  "string_a": "ABCBDAB",
  "string_b": "BDCABA"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.longest_common_subsequence",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.

pro Anfrage$0.002

Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.

HTTPCodeBedeutung
401unauthorizedDer API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer).
402insufficient_balanceIhr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht.
404unknown_typeUnbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog.
429rate_limitedZu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt.

Eingabevertrag, Algorithmus, Antwortform und Grenzen

Die Komplexität ist O(m·n) Zeit und O(m·n) Speicher in der hier genutzten naiven Tabellenform—passend zur Längengrenze, bewusst einfach für Lehre und deterministische Goldens. Senden Sie per POST einen JSON-Body mit zwei Pflicht-Zeichenkettenfeldern: string_a und string_b (Aliase a, s1, first, text_a sowie b, s2, second, text_b werden akzeptiert). Beide dürfen leer sein; beide müssen echte JSON-Zeichenketten sein, keine Zahlen oder Arrays. Fehlende Felder, Nicht-Zeichenketten-Typen und zu lange Eingaben scheitern mit invalid_input und werden nicht abgerechnet. Bei Erfolg spiegelt der Body string_a und string_b, meldet len_a und len_b und enthält length (die LCS-Länge) sowie subsequence (eine LCS-Zeichenkette, möglicherweise leer). Intern allokiert der Solver eine (m+1) mal (n+1) Integer-Tabelle, setzt dp[i][j] auf dp[i-1][j-1]+1 wenn die Präfixe am letzten Zeichen übereinstimmen, sonst das Maximum der oberen und linken Zelle, und wandert dann von der unteren rechten Ecke: ein treffendes Paar hängt dieses Zeichen an und geht diagonal; bei Gleichstand wird bevorzugt nach oben gegangen (von string_a verworfen), damit die rekonstruierte Instanz über Runtimes stabil ist.

Wo eine LCS-API echten Nutzen bringt

LMS-Auto-Bewerter können die API mit festen Paaren aufrufen und sowohl die Länge als auch prüfen, dass die zurückgegebene Teilsequenz Teilsequenz jeder Eingabe ist, und so Eins-Fehler in Tabellen fangen, die nur bei leeren oder einzeichenigen Randfällen scheitern. Weil die Implementierung reines Parse der Stufe A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Basispreis $0.002 ohne Modell-Tokens und ohne ausgehendes Netz.

Wie berechne ich die längste gemeinsame Teilsequenz zweier Zeichenketten?

Senden Sie string_a und string_b als JSON-Zeichenketten. Die API liefert length (LCS-Länge) und subsequence (eine maximale gemeinsame Teilsequenz), plus die gespiegelten Eingaben und ihre Längen.

Welches LCS wird zurückgegeben, wenn mehrere existieren?

Jedes LCS maximaler Länge ist korrekt. Diese Implementierung nutzt einen festen Backtrack (bei Gleichstand bevorzugt string_a verwerfen), damit dieselben Eingaben immer dieselbe Teilsequenz-Zeichenkette ergeben.

Was kostet der Rechner für die längste gemeinsame Teilsequenz?

Das Browser-Tool ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingaben werden nicht abgerechnet.

Vollständige KIT-Dokumentation lesen →