括号

leetcode 最长有效括号

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 00:02:14
给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/longest-valid-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class Solution { public: //令(为1,)为-1 //1.括号的匹配情况是一定的,当前缀和小于0的时候说明当前括号没法在前面匹配,直接跳过 //2.需要正向反向遍历 int longestValidParentheses(string s) { if(s.empty())return 0; int res=0; for(int i=0,cot=0,start=0;i<s.size();++i){ if(s[i]=='(')cot++; else{ cot--; if(cot==0){ res=max(res,i-start+1); } else if(cot<0){ start=i+1; cot=0; } } } for(int i=s.size()-1,cot=0,start=s

【数据结构】P1310 表达式的值

丶灬走出姿态 提交于 2019-11-27 22:47:34
【题目链接】 https://www.luogu.org/problem/P1310 题目描述 对于1 位二进制变量定义两种运算: 运算的优先级是: 先计算括号内的,再计算括号外的。 “× ”运算优先于“⊕”运算,即计算表达式时,先计算× 运算,再计算⊕运算。例如:计算表达式A⊕B × C时,先计算 B × C,其结果再与 A 做⊕运算。 现给定一个未完成的表达式,例如_+(_*_),请你在横线处填入数字 0 0或者 1 1 ,请问有多少种填法可以使得表达式的值为 0 0。 输入格式 共 2 行。 第1 行为一个整数 L L,表示给定的表达式中除去横线外的运算符和括号的个数。 第2 行为一个字符串包含 L L 个字符,其中只包含’(’、’)’、’+’、’*’这 4 4 种字符,其中’(’、’)’是左右括号,’+’、’*’分别表示前面定义的运算符“⊕”和“×”。这行字符按顺序给出了给定表达式中除去变量外的运算符和括号。 输出格式 共1 行。包含一个整数,即所有的方案数。注意:这个数可能会很大,请输出方案数对 10007 1 0 0 0 7取模后的结果。 输入输出样例 输入 #1 4 +(*) 输出 #1 3 说明/提示 【输入输出样例说明】 给定的表达式包括横线字符之后为:_+(_*_) 在横线位置填入(0 、0 、0) 、(0 、1 、0) 、(0 、0 、1) 时

【数据结构】表达式求值

穿精又带淫゛_ 提交于 2019-11-27 22:44:44
【题目链接】    https://www.acwing.com/problem/content/description/153/ 【题目描述】   给出一个表达式,其中运算符仅包含 +,-,*,/,^ (加 减 乘 整除 乘方)要求求出表达式的最终值。   数据可能会出现括号情况,还有可能出现多余括号情况。   数据保证不会出现大于或等于 231的答案。   数据可能会出现负数情况。 输入格式   输入仅一行,即为表达式。 输出格式   输出仅一行,既为表达式算出的结果。 输入样例:   (2+2)^(1+1) 输出样例:   16 【题解】: 1、处理括号问题,由于又多余的括号,我们发现左括号是没有用的,所以我们匹配尽量多的左括号,然后配上一个右括号即可。 2、维护两个栈的操作。   第一个栈 是维护操作数,如果运算的时候就弹出两个出来,然后运算结果又放回去,最后求数字栈的栈顶元素即可。   第二个栈 是维护一个严格递增的操作符,操作符是优先级的。“+” = “-” < “*” = “/” < “^”,严格递增。每次压栈时都加优先级比较,如果不是严格递增的就弹出来运算一遍然后压回去。注意注意!!!存在 负数的时候是而又不是正数。 【代码】代码是仿造y总的写法,不得不说,y总码力十足。 1 #include<string> 2 #include<stack> 3 #include

C# Lambda 表达式

扶醉桌前 提交于 2019-11-27 19:29:31
Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。 两种表达式 1.表达式为其主体: (input-parameters) => expression 2.语句块作为其主体: (input-parameters) => { <sequence-of-statements> } 表达式Lambda: 表达式位于 => 运算符右侧的 lambda 表达式称为“表达式 lambda”。 表达式 lambda 会返回表达式的结果,并采用以下基本形式: (input parameters) => expression 仅当 lambda 只有一个输入参数时,括号才是可选的;否则括号是必需的。 括号内的两个或更多输入参数使用逗号加以分隔: (x, y) => x == y 有时,编译器难以或无法推断输入类型。 如果出现这种情况,你可以按以下示例中所示方式显式指定类型: (int x, string s) => s.Length > x 使用空括号指定零个输入参数: () => SomeMethod() 语句Lambda 当lambda表达式中,有多个语句时,写成如下形式: (input

表达式的计算

风格不统一 提交于 2019-11-27 16:34:26
引用某本蓝书 解决这道题,首先其实就是两步,1.把中缀转后缀 2.把后缀计算并输出 1. 中缀表达式转后缀表达式 建立一个栈来存储运算符 左括号:进栈 数字:输出 右括号:取栈顶直到左括号,把左括号出栈 运算符:保证优先级的前提下,插入到合适的地方 2.计算后缀表达式 建立一个栈存数 遇到数:进栈 遇到运算符:取栈顶两个数进行计算 大概就是这样了,代码如下: #include<bits/stdc++.h> using namespace std; inline int bj(char op){//^ > */ > +- > ( if(op=='(')return 0; if(op=='+'||op=='-')return 1; if(op=='*'||op=='/')return 2; if(op=='^')return 3; return -1; 防止特殊情况 } inline int calc(char op,int a,int b){//运算 switch(op){//注意先后顺序 case '+':return a+b; case '-':return a-b; case '*':return a*b; case '/':return a/b; case '^':return pow(a,b); } } string st1; inline string change

Sublime Text 3快捷键

北城以北 提交于 2019-11-27 16:16:54
控制类 Ctrl+Shift+P: 打开命令面板 Ctrl+P: 搜索项目中的文件 Ctrl+G: 跳转到第几行 Ctrl+W: 关闭当前打开文件 Ctrl+Shift+W: 关闭所有打开文件 Ctrl+Shift+V: 粘贴并格式化 Ctrl+D: 选择单词,重复可增加选择下一个相同的单词 Ctrl+L: 选择行,重复可依次增加选择下一行 Ctrl+Shift+L: 选择多行 Ctrl+Shift+Enter: 在当前行前插入新行 Ctrl+X: 删除当前行 Ctrl+M: 跳转到对应括号 Ctrl+U: 软撤销,撤销光标位置 Ctrl+J: 选择标签内容 Ctrl+F: 查找内容 Ctrl+Shift+F: 查找并替换 Ctrl+H: 替换 Ctrl+R: 前往 method Ctrl+N: 新建窗口 Ctrl+K+B: 开关侧栏 Ctrl+Shift+M: 选中当前括号内容,重复可选着括号本身 Ctrl+F2: 设置/删除标记 Ctrl+/:注释当前行 Ctrl+Shift+/:当前位置插入注释 Ctrl+Alt+/: 块注释,并Focus到首行,写注释说明用的 Ctrl+Shift+A: 选择当前标签前后,修改标签用的 F11:全屏 Shift+F11: 全屏免打扰模式,只编辑当前文件 Alt+F3: 选择所有相同的词 Alt+.: 闭合标签 Alt+Shift+数字

C/C++尖括号和双引号的区别

我的未来我决定 提交于 2019-11-27 15:52:08
加双引号表示,应用程序先在当前的文件夹里面寻找该头文件,若没有找到,再到系统文件夹里去找。一般加双引号多为自己编写的头文件。 加尖括号则表示,应用程序直接到系统文件夹去找该文件。这类多为系统头文件。 来源: https://www.cnblogs.com/kandid/p/11369120.html

oracle子查询中not in后面不能为null值的理解

可紊 提交于 2019-11-27 15:23:42
首先说说oracle中的null值吧。 null在oracle中代表未知,表示可能有,也可能没有。任何与null值的普通运算都为null,但可以用一些函数来处理null值,oracle排序中默认null最大。 接着进入正文 这里in后面有null,能返回数据 但加了not后,就不能返回数据了 这里的in后面的句子可以理解为or拼接,即 id in (200,201,null)可以等价于id=200 or id=201or id=null, id not in (200,201,null)可以等价于not(id=200 or id=201or id=null)或id!=200 and id!=201 and id=null。 为什么都是or拼接,in可以而not in不可以呢,可以把not in理解为后面的and表达式就知道了,因为id=null为null,也就相当于false,导致整个表达式为false,无论传何值都为false,自然无法返回数据。 当然若硬要用or表达式来解释呢,其实可以看not 后面的这个括号,有括号意味着要确定里面的返回值再加not。 例如id为201,整个in 的or表达式为 false or true or null,当执行到true时就可返回,无需看null值了。 而在 not in的or表达式中是 not (fasle or true or null)

正则表达式

旧城冷巷雨未停 提交于 2019-11-27 15:14:30
正则表达式到底是什么东西? 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。 正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 很可能你使用过Windows/Dos下用于文件查找的 通配符(wildcard),也就是 *和 ?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里, *会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找 所有以0开头,后面跟着2-3个数字,然后是一个连字号"-",最后是7或8位数字的字符串(像 010-12345678或 0376-7654321)。 注:字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等等。 字符串是0个或更多个字符的序列。 文本也就是文字,字符串。说某个字符串 匹配某个正则表达式,通常是指这个字符串里有一部分(或几部分分别)能满足表达式给出的条件。 入门 学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。 假设你在一篇英文小说里查找 hi,你可以使用正则表达式 hi。 这几乎是最简单的正则表达式了

Lua 5.1 参考手册

筅森魡賤 提交于 2019-11-27 11:18:03
Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingnow.com Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 1 - 介绍 Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集) 作为一个扩展式语言,Lua 没有 "main" 程序的概念:它只能 嵌入 一个宿主程序中工作,这个宿主程序被称作 embedding program 或简称为 host 。宿主程序可以通过调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注入 C 函数让 Lua 代码调用。这些扩展的 C 函数,可以大大的扩展了 Lua 可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。 Lua 的官方发布版就包含了一个叫做 lua 的简单的宿主程序,它用 Lua