当前位置: 首页 > news >正文

宝鸡网站建设公司都有哪些武汉抖音seo搜索

宝鸡网站建设公司都有哪些,武汉抖音seo搜索,小制作小发明论文,有哪些中文域名网站有哪些本文涉及知识点 栈 LeetCode 1106. 解析布尔表达式 布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定: ‘t’,运算结果为 true ‘f’,运算结果为 false ‘!(subExpr)’,运算过程为对内部表达式…

本文涉及知识点

LeetCode 1106. 解析布尔表达式

布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定:
‘t’,运算结果为 true
‘f’,运算结果为 false
‘!(subExpr)’,运算过程为对内部表达式 subExpr 进行 逻辑非(NOT)运算
‘&(subExpr1, subExpr2, …, subExprn)’,运算过程为对 2 个或以上内部表达式 subExpr1, subExpr2, …, subExprn 进行 逻辑与(AND)运算
‘|(subExpr1, subExpr2, …, subExprn)’,运算过程为对 2 个或以上内部表达式 subExpr1, subExpr2, …, subExprn 进行 逻辑或(OR)运算
给你一个以字符串形式表述的 布尔表达式 expression,返回该式的运算结果。

题目测试用例所给出的表达式均为有效的布尔表达式,遵循上述约定。

示例 1:

输入:expression = “&(|(f))”
输出:false
解释:
首先,计算 |(f) --> f ,表达式变为 “&(f)” 。
接着,计算 &(f) --> f ,表达式变为 “f” 。
最后,返回 false 。
示例 2:

输入:expression = “|(f,f,f,t)”
输出:true
解释:计算 (false OR false OR false OR true) ,结果为 true 。
示例 3:

输入:expression = “!(&(f,t))”
输出:true
解释:
首先,计算 &(f,t) --> (false AND true) --> false --> f ,表达式变为 “!(f)” 。
接着,计算 !(f) --> NOT false --> true ,返回 true 。

提示:

1 <= expression.length <= 2 * 104
expression[i] 为 ‘(’、‘)’、‘&’、‘|’、‘!’、‘t’、‘f’ 和 ‘,’ 之一

递归

这个容易想到。

不需要数据栈,只需要操作符栈。本题运算符和操作数都是单字符,很好解析。
除逗号和右括号外,全部入栈。
忽略逗号。
遇到右括号,出栈直到左括号出栈。
记录出栈的 t f数量。记录并出栈运算符。
运算结果入栈。

代码

class Solution {
public:bool parseBoolExpr(string exp) {for (const auto& ch : exp) {if (',' == ch) { continue; }if (')' == ch) {int cnts[2] = { 0 };while ('(' != m_sta.top()) {cnts['t' == m_sta.top()]++;m_sta.pop();}m_sta.pop();bool bRet = true;if ('&' == m_sta.top()) {bRet = (0 == cnts[0]);}else if ('|' == m_sta.top()) {bRet = (0 != cnts[1]);}else {bRet = cnts[0];}m_sta.pop();m_sta.push(bRet ? 't' : 'f');continue;}m_sta.emplace(ch);}return 't' == m_sta.top();}stack<char> m_sta;
};

单元测试

template<class T1,class T2>
void AssertEx(const T1& t1, const T2& t2)
{Assert::AreEqual(t1 , t2);
}template<class T>
void AssertEx(const vector<T>& v1, const vector<T>& v2)
{Assert::AreEqual(v1.size(), v2.size());	for (int i = 0; i < v1.size(); i++){Assert::AreEqual(v1[i], v2[i]);}
}template<class T>
void AssertV2(vector<vector<T>> vv1, vector<vector<T>> vv2)
{sort(vv1.begin(), vv1.end());sort(vv2.begin(), vv2.end());Assert::AreEqual(vv1.size(), vv2.size());for (int i = 0; i < vv1.size(); i++){AssertEx(vv1[i], vv2[i]);}
}namespace UnitTest
{string expression;TEST_CLASS(UnitTest){public:TEST_METHOD(TestMethod0){expression = "&(|(f))";auto res = Solution().parseBoolExpr(expression);AssertEx(false,res);}TEST_METHOD(TestMethod1){expression = "|(f,f,f,t)";auto res = Solution().parseBoolExpr(expression);AssertEx(true, res);}TEST_METHOD(TestMethod2){expression = "!(&(f,t))";auto res = Solution().parseBoolExpr(expression);AssertEx(true, res);}};
}

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771

如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

相关下载

想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653

我想对大家说的话
《喜缺全书算法册》以原理、正确性证明、总结为主。
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

http://www.hkea.cn/news/626825/

相关文章:

  • wordpress 怎么改中文网站推广优化价格
  • 南山做网站公司怎么选择企业seo优化服务
  • 什么 电子商务网站建设与管百度招商加盟
  • 南召微网站开发手机优化大师官方版
  • 营销型网站技术特点网站推广网
  • 龙游县住房和城乡建设局网站百度seo优化方法
  • 深圳方维网站建设设计个人网站
  • wordpress 流量站百度应用
  • ps素材网seo在线工具
  • 岳阳网站开发公司html网站模板免费
  • 怎样用模板做网站优化网站技术
  • 全国新型疫情最新情况长沙网站搭建优化
  • 郑州网站建设规划seo建站教程
  • 购物网站 购物车界面如何做百度搜索网
  • 推广网站的图片怎么做外贸平台
  • 新手如何给自己的网站做优化bt种子磁力搜索
  • 成都学校网站制作遵义网站seo
  • d?t网站模版宁波seo在线优化哪家好
  • c做的网站淄博做网站的公司
  • 网站开发制作公司郑州网站建设外包
  • 注册域名用个人还是公司好长沙seo优化排名
  • 电子商务网站建设与维护展望今日新闻联播
  • 网站建设主流技术站长之家ping检测
  • 温州建设集团有限公司网站首页百度手机版网页
  • 广西网络干部学院官网seo推广人员
  • 可以做红娘的相亲网站江北seo综合优化外包
  • 公司建设网站需要注意什么软文广告示范
  • 高端网站建设 引擎技企业网页
  • 模仿别人网站百度外链查询工具
  • 教程建设网站广告免费发布信息平台