Programm, um die balance der Klammern

Hallo ich habe ein string-array, das die Werte enthält, die als "{[()]}", "}[]{", "{()[]". Jetzt habe ich, um die balance der Klammern wie für jedes Start-Klammer, z.B. { oder [ oder (, es muss eine schließende Klammer. Wenn der input-string hat die gleiche Anzahl öffnende und schließende Klammern, dann ist die Ausgabe "JA" sonst "NEIN". Auch wenn der string hat eine schließende geschweifte Klammer vor eine passende öffnende Klammer dann auch die Ausgabe "NEIN". Also im Grunde hat die Ausgabe zu einem string-array, werden die Werte enthalten, wie dies für die oben genannten input-Zeichenfolge-array : "JA", "NEIN", "NEIN".

Schrieb ich das folgende Programm, das eine Menge von if-else-Bedingung. Ich Frage mich, ob es keine bessere Möglichkeit in C#, um mit diesem problem umzugehen.

static void Main(string[] args)
{
  string[] arrBraces = Console.ReadLine().Split(' ');
  string[] result = new String[arrBraces.Length];

  for (int i = 0; i < arrBraces.Length; i++) {
    Console.WriteLine(arrBraces[i]);
    int curly = 0, square = 0, round = 0;

    foreach (char c in arrBraces[i]) {
      if (c == '{') {
        curly++;
      } else if (c == '[') {
        square++;
      } else if (c == '(') {
        round++;
      } else if (c == '}') {
        if (curly > 0) {
          curly--;
        } else {
          curly = -1;
          break;
        }
      } else if (c == ']') {
        if (square > 0) {
          square--;
        } else {
          square = -1;
          break;
        }
      } else if (c == ')') {
        if (round > 0) {
          round--;
        } else {
          round = -1;
          break;
        } 
      }
    }

    if (curly == 0 && square == 0 && round == 0) {
      result[i] = "YES";
    } else {
      result[i] = "NO";
    }
  }

  foreach (string str in result) {
    Console.WriteLine (str);
  }
  Console.ReadKey();
}

Fand ich eine ähnliche Frage hier aber so wie es scheint, ist auch die gleiche Sache, nur, dass es mit stack zum speichern der Klammer in der Erwägung, dass mein problem erklärt ausdrücklich, dass die Klammern in einem string-array.

Sowieso jede Hilfe oder Anregungen zur Verbesserung der code wäre sehr hilfreich.

InformationsquelleAutor Naphstor | 2016-05-05
Schreibe einen Kommentar