用C ++评估三元表达式的程序
假设我们有一个保存三元表达式的表达式,我们必须评估该表达式的结果。它支持T和F等True和False以及“?”值和“:”字符。有一些属性:
给定字符串的长度必须小于或等于10000。
条件表达式从右到左分组。
条件将始终为T或F。因此,条件将永远不是数字。
表达式的结果将始终为T或F。
因此,例如,如果输入像“T??F:T:T”,因此输出将为F。
让我们看下面的实现以更好地理解:
示例
#include
using namespace std;
class Solution {
public:
string parseTernary(string s) {
string ret = "";
int n = s.size();
stack st;
for(int i = n - 1; i >= 0; i--){
char x = s[i];
if(!st.empty() && st.top() == '?'){
st.pop();
char first = st.top();
st.pop();
st.pop();
char second = st.top();
st.pop();
if(x == 'T'){
st.push(first);
}
else st.push(second);
}
else{
st.push(x);
}
}
while(!st.empty()){
ret += st.top();
st.pop();
}
reverse(ret.begin(), ret.end());
return ret;
}
};
main(){
Solution ob;
cout << (ob.parseTernary("T?T?F:T:T"));
}输入值
" T?T?F:T:T"
输出结果
F
热门推荐
10 前程祝福语简短暖心
11 简短中秋祝福语朋友结婚
12 情侣签名简短英文祝福语
13 邮政考试祝福语简短励志
14 儿子生病父母祝福语简短
15 山西话婚礼祝福语简短
16 送离职同事简短祝福语
17 简短创意祝福语有什么
18 过满月祝福语女生简短