解析布林表示式

2021-10-12 01:29:07 字數 1487 閱讀 2471

題目**

給你乙個以字串形式表述的布林表示式,返回該式的運算結果。

有效的表示式需遵循以下約定:

示例 1:

輸入:expression = "!(f)"

輸出:true

示例 2:

輸入:expression = "|(f,t)"

輸出:true

示例 3:

輸入:expression = "&(t,f)"

輸出:false

示例 4:

輸入:expression = "|(&(t,f,t),!(t))"

輸出:false

思路:遞迴

class solution  else  else if (c == '&')  else if (c == '|') 

}return false;

}private boolean parseand(string expression)

}return result;

}private boolean parseor(string expression)

}return result;}/*

* 想根據逗號把字串分開,奈何不會正則

* 如 f,&(t,t) 分成f、&(t,t)

* */

private string split(string expression)

string splits = new string[10];

int count = 0;

string subexp = expression;

while (true)

}int rightindex = matchbracket(subexp);

splits[count++] = subexp.substring(0, rightindex + 1);

if (rightindex == subexp.length() - 1)

subexp = subexp.substring(rightindex + 2);

}string ans = new string[count];

system.arraycopy(splits, 0, ans, 0, count);

return ans;

}private int matchbracket(string expression) else if (expression.charat(index) == ')')

index++;

}return index - 1;

}public static void main(string args)

}

1106 解析布林表示式 C

與波蘭表示式類似,利用2個棧,乙個存數字,乙個存運算子。略有不同的是,四則運算都是雙目運算子,每次計算都是彈出2個數字與1個運算子,結果再壓入數字棧中。但是此題的運算子 或與 都是多目運算子,遇到 要一直彈出到 用兩個變數記錄是否出現t或f,對於 只要出現false結果就是false 對於 只要出現...

布林表示式

布林表示式 boolean expression 是一段 宣告,它最終只有true 真 和false 假 兩個取值。從最基本的層次來說,所有的布林表示式,不論它的長短如何,其值只能是true或false。最簡單的布林表示式是等式 equality 這種布林表示式用來測試乙個值是否與另乙個值相同。它可...

翻譯布林表示式

翻譯布林表示式time limit 1000 ms memory limit 65536 kib problem description 大家都學過了布林表示式的翻譯,其中有乙個拉鍊 回填技術,這次我們就練習這個技術。input 多組輸入,每組輸入為一行字串,例如 a b or c d and e ...