我在面試論壇上發現了這個問題,並認爲這是一個有趣的問題。有什麼簡單的方法可以在C++中完成這個任務嗎?例如,假設我們有函數聲明:將(0&(1 | 0)| 1)&(0 | 1))等字符串轉換爲相應的真值
bool _transform(string x);
/* x is a combination of (,), 0, 1, &, and | such that all expressions
start with a open and ending brace, and the function evaluates the
strings actual truth value
*/
是否有任何有效且相對簡單的方法來執行此操作?我想遞歸式地使用括號,但問題似乎很難。
你能假設這個字符串是一個有效的表達式嗎?我相當肯定這會改變實施相當多。 – Matthew
@Human對不起,不是澄清,但是,字符串將始終有效,錯誤檢查不(可能)需要。爲了簡單起見,我只是說表達式總是正確的形式。 – user3340001
在表達式解析和評估中,這只是一個相當簡單的練習,用邏輯運算符而不是算術運算。微不足道。查找「遞歸下降表達式解析」或Dijkstra調車碼算法。 @Human這些算法可以檢測到無效輸入:它根本沒有任何區別。 – EJP