String - Reduktion- Programming Contest . Lösung benötigt

Ich habe eine Frage, die uns auffordert, zu reduzieren die Zeichenfolge wie folgt.

Input ist eine Zeichenkette mit nur A, B oder C. Ausgabe muss die Länge des
die reduzierte string

Den string kann reduziert werden, indem die folgenden Regeln

Wenn überhaupt 2 verschiedene Buchstaben benachbart sind, diese zwei Buchstaben sein
ersetzt durch den Dritten Buchstaben.

ZB ABA -> CA -> B . Also endgültige Antwort 1 (Länge reduziert, string)

ZB ABCCCCCCC

Diese nicht zu CCCCCCCC, wie es reduziert werden kann, alternativ durch die

ABCCCCCCC->AACCCCCC->ABCCCCC->AACCCC->ABCCC->AACC->ABC->AA

als hier Länge ist 2 < (Länge CCCCCCCC)

Wie gehen Sie über dieses problem?

Vielen Dank!

Dinge klarzustellen: die Frage heißt es, es will die minimale Länge des reduzierten string. So im zweiten Beispiel oben gibt es 2 Lösungen möglich, eine CCCCCCCC und die anderen AA. So 2 ist die Antwort wie Länge AA 2, die kleiner ist als die Länge der CCCCCCCC = 8.

  • Wie funktioniert ABCCCCCCC geworden AACCCCCC? Die Regel würde vorschlagen, dass die AB wird C.
  • Charlesworth: ich denke, Sie reduzieren BC zu A in diesem Schritt zu erhalten AACCCCCC. In anderen Worten, ist es nicht erforderlich, zur Verringerung der leftmost-matching-substring, Sie reduzieren jeder Teilstring, der aus zwei verschiedenen Zeichen.
  • Scheint, wie haben Sie zu Beginn ganz rechts. So BC wird A (der Brief nicht beteiligt). Für die nächste Umstellung AC wird zu B, dann BC wird A usw.
  • Vielleicht, aber dann vermutlich auf diese Weise können mehrere verschiedene Lösungen für einen Eingang. Die Frage ist wirklich nicht klar!
  • Wie haben Sie sich das problem? Haben Sie versucht, bei allen?
  • Erwarten Sie, um die Länge der kürzesten reduziert string?
  • Ja, Sie haben zu finden, die Länge der kürzest möglichen reduziert string.
  • Ich denke, Sie können etwas tun, wie Dynamische Programmierung und rekursiv die Funktion aufrufen und nehmen min in allen Längen..
  • Charlesworth: yup, es sind auf jeden Fall mehrere Lösungen. Ich bin einverstanden mit Howard hier, dass das Plakat interessiert ist, in der kürzest möglichen reduziert string. Und ja, die Frage ist unklar - ich glaube, ich habe gerade füllte die Lücken nach meiner eigenen Erfahrung mit solchen puzzle-Fragen 😉
  • Das ist wahr, Sie können reduzieren die 2 benachbarten Zeichen irgendwo im string. es gibt keine Einschränkung, es werden die ersten beiden Zeichen
  • Können Sie uns sagen, das der maximalen erwarteten Länge der Zeichenfolge, oder der vorgeschlagene Algorithmus Komplexität?
  • Ich sah dieses problem auf interviewstreet.com für das erste mal und es gelöst mit Hilfe von DP. Aber, lassen Sie mich Ihnen eine Beobachtung, die möglicherweise helfen, die Entwicklung eine einfachere Lösung: Sie können beweisen, dass deine Letzte Antwort ist entweder der Länge 1 oder 2 ! die einzige Ausnahme ist, wenn die Eingabe alle ein Zeichen wie: CCCCCC
  • Beweis-Idee: Stell dir vor, Sie stecken an CCCC irgendwann. denke, dass der Vorherige Schritt... sagen, Es war: CABCC. wählen Sie ein anderes paar, und Sie werden es besser machen.
  • Ich denke, ähnlich kann man beweisen, dass ein greedy-Ansatz funktionieren würde. So stellen Sie sicher pick ein paar, die werden dich nicht stecken ccccccc ttttt Fällen.

InformationsquelleAutor Zer0 | 2011-12-18
Schreibe einen Kommentar