嗨,我有一個字符串數組,包含值爲「{[()]}」,「} [] {」,「{()[]」。現在我必須平衡每個起始支撐的支撐,例如如果輸入字符串具有相同數量的開始和結束大括號,則輸出爲「是」,否則爲「否」。如果字符串在因此輸出必須是一個字符串數組,它將包含上述輸入字符串數組的這樣的值:「YES」,「NO」,「NO」。程序來平衡大括號
我寫了下面的程序,它有很多的if-else條件。我不知道是否有在C#什麼更好的辦法來解決這個問題。
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();
}
我發現了一個類似的問題here,但似乎就像它也在做同樣的事情,就是這樣正在使用堆棧來存儲括號,而我的問題明確指出大括號是在一個字符串數組中。
反正任何幫助或建議,以改善代碼,將不勝感激。
如果只需要平衡開啓和關閉括號的數量,那麼Joel Coehoom的第一個解決方案就是正確的。我誤解了你的要求。基本上這個算法將適用於你必須考慮開放近對稱性的場景。 –