Was stimmt mit meinem Tag-Content-Extractor-Programm in Java (Hackerrank) nicht?Java

Java-Forum
Guest
 Was stimmt mit meinem Tag-Content-Extractor-Programm in Java (Hackerrank) nicht?

Post by Guest »

Mein Code besteht die ersten beiden Testfälle, scheitert jedoch beim dritten. Kann mir bitte jemand helfen?

Link: https://www.hackerrank.com/challenges/t ... -extractor

Problemstellung:

In einer Tag-basierten Sprache wie XML oder HTML sind Inhalte eingeschlossen zwischen einem Start-Tag und einem End-Tag. Beachten Sie, dass das entsprechende End-Tag mit einem / beginnt.

Anhand einer Textzeichenfolge in einer Tag-basierten Sprache analysieren Sie diesen Text und rufen Sie den eingeschlossenen Inhalt ab innerhalb von Sequenzen gut organisierter Tags, die das folgende Kriterium erfüllen:
  • Der Name der Start- und End-Tags muss identisch sein.
  • Tags können verschachtelt werden, aber Inhalte zwischen verschachtelten Tags gelten als ungültig
  • Tags können aus beliebigen druckbaren Zeichen bestehen.
Eingabeformat:
Die erste Eingabezeile enthält eine einzelne Ganzzahl, N (die Anzahl der Zeilen).
Das N Nachfolgende Zeilen enthalten jeweils eine Textzeile.

Einschränkungen:
  • 1 0) {
    String line = in.nextLine();
    char[] A = line.toCharArray();
    String tag = "", tag1 = "";
    int a1 = 0, b1 = 0;
    int a = 0, b = 0;
    int flag = 0, end = 0;

    a = line.indexOf('', b1);
    //System.out.println("Index of first '' is " + b);

    while ((a != -1) && (b != -1) && b < line.lastIndexOf(">")) {
    tag = "";
    tag1 = "";
    //System.out.println("Index of first '' is " + b);
    for (int k = a + 1; k < b; k++)
    tag = tag + A[k];
    //System.out.println("tag is " + tag);

    a1 = line.indexOf('', b + 1);

    if (A[a1+1] == '/') {
    //System.out.println("Index of second '' is " + b1);
    for (int k = a1 + 2; k < b1; k++)
    tag1 = tag1 + A[k];
    if ((!tag.isEmpty()) && (!tag1.isEmpty())) {
    if (tag.equals(tag1)) {
    if ((b + 1) == a1) {
    System.out.println("None");
    flag = 1;
    } else {
    for (int k = b + 1; k < a1; k++)
    System.out.print(A[k]);
    System.out.println();
    flag = 1;
    }
    } else if (flag == 0) {
    System.out.println("None");
    flag = 1;
    }
    }
    }
    a = a1;
    b = b1;
    //System.out.println("tag1 is " + tag1);
    }
    if ((b == -1 || a == -1 || tag1.isEmpty() || tag.isEmpty()) && (flag == 0)) {
    System.out.println("None");
    }
    testCases--;
    }
    }
    }


    BEARBEITEN: Für den Testfall Nr. 3 kann ich das Problem nicht debuggen, warum die große Zeichenfolge Zeile für Zeile analysiert wird, obwohl dies der Fall war um den ganzen Absatz zu analysieren! Wenn es das als Ganzes analysieren würde, würde ich die Ausgabe richtig machen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post