括号

Scala关于运算符问题

笑着哭i 提交于 2020-03-10 21:54:58
操作符 这部分内容没有必要刻意去理解和记忆, 语法使用的多了,自然就会产生感觉,该部分内容暂时大致了解一下即可。 如果想在变量名、类名等定义中使用语法关键字(保留字) ,可以配合反引号: val `val` = 42 这种形式叫中置操作符, A 操作符 B 等同于 A.操作符(B) 后置操作符, A 操作符等同于 A.操作符,如果操作符定义的时候不带()则调用时不能加括号 无参函数不省略小括号,调用函数加不加小括号都行 ; 无参函数省略小括号,调用函数一定不能加小括号 目的是为了访问一致性,都像属性 前置操作符, +、 -、!、 ~等操作符 A 等同于 A.unary_操作符 unary**(一元运算符)函数的声明规则 为 def unary_函数名={函数体}** 赋值操作符, A 操作符=B 等同于 A=A 操作符 B def main ( args : Array [ String ] ) : Unit = { val ot = new OpTest ot ++ ( ) //后置运算符 定义了一个方法 ot . + ! ot //前置运算符 } class OpTest { def ++ ( ) : Unit = { println ( "+++++++++++" ) } def + : Unit = { println ( "=================" ) }

Leecode valid-parentheses

陌路散爱 提交于 2020-03-10 07:49:11
题目描述 给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。 分析 使用栈结构,在遍历字符的时候,如果是正括号,压栈,如果是反括号,弹出一个栈顶元素,判断是否和反括号匹配。如果匹配继续,反之是不合法的。最后如果栈被清空了,说明所有元素都匹配,则是合法序列。 java代码 public class Solution { public boolean isValid ( String s ) { if ( s == null || s . equals ( "" ) ) { return false ; } char [ ] data = s . toCharArray ( ) ; Stack < Character > stack = new Stack < > ( ) ; for ( int i = 0 ; i < data . length ; i ++ ) { if ( isForward ( data [ i ] ) ) { stack . push ( data [ i ] ) ; } else { if ( stack . isEmpty ( ) ) { return false ; } else {

CF-div2-626-C.Unusual Competitions

岁酱吖の 提交于 2020-03-09 21:49:16
法一: 1.容易想到,左括号不等于右括号数量,就不行,输出-1 2.转成括号序列问题,遇到左括号+1,遇到右括号-1; 然后括号匹配,当前缀和为0的时候为合法序列。前缀和为负的时候为“可以更改成合法的非法序列” 参考思路 法二: 搞个栈,贪心 1.容易想到,左括号不等于右括号数量,就不行,输出-1 2.每次遇到右括号 弹出栈顶左括号;如果遇到右括号,前面栈中却没有左括号,说明这个序列需要我们去更改。比如)( 如果每次遇到右括号前面都有左括号与它匹配就是个合法的括号,权值为0;比如(()()) 思路2代码 #include<bits/stdc++.h> using namespace std; const int maxn = 1e6+100; int n; char s[maxn]; stack<char> st; int main(){ cin>>n; int allLeft = 0,allRight = 0; for(int i=1;i<=n;i++) { cin>>s[i]; if(s[i] == '(') allLeft++; else allRight++; } if(allLeft != allRight){ puts("-1"); return 0; } int left = 0,right = 0; int ans = 0; bool flag2 = true;

递归,贪心

我的未来我决定 提交于 2020-03-09 00:25:47
递归 递归算法是指程序直接或间接调用自身的技巧;他通常把一个大型复杂问题层层转化为一个与原问题相似的规模较小的问题来求解。其基本思想为层层分解,关键在于找出递归定义和终止条件。 例题 G:括号匹配问题 字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$“标注,不能匹配的右括号用”?"标注. Input 输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100 注意:cin.getline(str,100)最多只能输入99个字符! Output 对每组输出数据,输出两行,第一行包含原始输入字符,第二行由" " , " ? " 和 空 格 组 成 , " ","?"和空格组成," " , " ? " 和 空 格 组 成 , " “和”?"表示与之对应的左括号和右括号不能匹配。 SAMPLE INPUT ((ABCD(x) )(rttyy())sss)( SAMPLE OUTPUT ((ABCD(x) $$ )(rttyy())sss)( ? ?$ 为解决此问题引入STACK函数 # include <iostream> # include

正则表达式——引用分组

▼魔方 西西 提交于 2020-03-08 05:40:15
  括号不仅仅能把有联系的元素归拢起来并分组,还有其他的作用——使用括号之后,正则表达式会保存每个分组真正匹配的文本,等到匹配完成后,通过group(num)之类的方法,“引用”分组在匹配是捕获的内容(这个方法之前已经出现过)。其中,num表示对应括号的编号,括号分组的编号规则是从左向右计数,从 1 开始。因为“捕获”了文本,所以这种功能叫做 捕获分组 (capturing group)。对应的,这种括号叫做捕获型括号。 来源: https://www.cnblogs.com/gaara0305/p/10019092.html

习题3.8 符号配对 (20分)

ε祈祈猫儿з 提交于 2020-03-07 02:59:23
本题利用堆栈性质处理 1)初始设置一个空栈,顺序读入括号 顺序遍历得出的chars_str(存储括号的string) 2)若是右括号,判断栈是否为空,若为空则NO,若栈顶此时括号与此右括号不相匹配,则NO,匹配则弹栈 3)若是左括号,直接压栈 4)若遍历完整个chars_str,stack不为空,则为NO,能走到这一步,栈顶元素必为某左括号;若stack为空,则为YES 注意: (1)本程序中间有多个返回点(return 0) (2)要对第一个错误的括号输出相应的错误信息,是一个烦点,程序对此问题的处理有加以注释 # include <iostream> # include <stack> # include <string> # include <vector> using namespace std ; int main ( ) { string chars_str = "" , cur_str ; vector < string > vec ; stack < char > my_stack ; while ( true ) { /*将每行分别读入string向量vec*/ getline ( cin , cur_str ) ; if ( cur_str == "." ) break ; vec . push_back ( cur_str ) ; } for ( int i

元组

不羁的心 提交于 2020-03-06 17:30:09
元组 元组也是 Python 中的数据类型之一。元组的关键字是 tuple 。 元组的定义方法和列表极其相似,只是将 中括号 变成了 小括号 。很多时候,小括号可以省略: tu = (1, 2, 3, 'alex') tu1 = 1, 2, 3, 'alex' 元组就是一个不可变的列表。因为不可变,元组没有增删改的方法,只能进行查看。 元组也可以通过索引方式进行查找,也同样支持切片操作: tu = 1, 2, 3, 'alex' print(tu[0]) print(tu[1:3]) 输出的结果为: 1 (2, 3) 注意元组切片后得到的还是元组数据。 元组同样可以通过 for 循环的方法来查看: tu = 1, 2, 3, 'alex' for i in tu: print(i) 元组的 .count() 方法可以用来统计指定元素在元组中出现的次数; .index() 方法可以通过元素的名称获取元素的索引: tu = 1, 2, 3, 'alex' print(tu.count(3)) print(tu.index(3)) 输出的结果为: 1 2 需要注意的是,并不是出现小括号表示该数据的数据类型时元组。当小括号中没有出现逗号时,数据类型就是括号中数据类型本身: a = (10) print(type(a)) b = ('alex') print(type(b)) 输出的结果为:

Python程序设计实验报告1

故事扮演 提交于 2020-03-05 18:29:01
安徽工程大学 Python程序设计实验报告 班级:物流 192 姓名:李心悦 学号: 3190505218 成绩: 日期: 2020.3.5 指导教师:修宇 实验名称 实验一 熟悉 IDLE 和在线编程平台 实验目的 掌握 Python IDLE 集成开发环境的安装与使用 熟悉在线编程平台 掌握基本的 python 程序编写、编译与运行程序的方法 实验内容 1、 按照实验指导安装 IDLE ,尝试交互式运行 python 程序和批量运行 python 程序二种方式。 2、 运行第一章课本的温度转换实例程序。在运行过程中 (1) 观察语法高亮显示和自动缩进功能。 (2) (重点)人为按照以下情况分别把程序改错,尝试运行程序,并观察结果记录 IDLE 给出的错误提示,通过网络查找资料,分析错误的含义。 a) 把某行的缩进修改为 3 个空格 b) 把关键词 elif 改为 elfi ,或者 print 写错 prinnt c) 把某一个英文引号” “ 修改为中文引用 “” d) 把某行的冒号去掉 e) 把某行的英文括号 ( ) 改写为中文括号() f) 把某行括号 ( ) 去掉一个变为 ( 3、 尝试 python123 的在线编程功能: https://www.python123.io/ 实验记录与分析 1、 按照实验指导安装 IDLE ,尝试交互式运行 Python 程序和批量运行

前缀、中缀、后缀表达式转换详解

回眸只為那壹抹淺笑 提交于 2020-03-05 16:10:44
[toc] 前缀、中缀、后缀表达式转换详解 1:表达式 1.1 、 如有1 + (( 2 + 3)* 4 ) – 5表达式,各个表达式如下 ​ 前缀:- + 1 * + 2 3 4 5 ​ 中缀:1 +(( 2 + 3 )* 4 )-5 ​ 后缀:1 2 3 + 4 * + 5 – 2:转换方式 2.1、中缀表达式转后缀表达式的两种方法 2.1.1 、方法一:直接转换法 ​ (1)首先确定表达式表达式A的运算顺序,然后加括号:((1 + (( 2 + 3)* 4 )) – 5 ) ​ (2)从最里面的一层括号开始运算,转换成后缀表达式的方法为:(忽略括号)数字在前,符号在后。 ​ 1)( 2 + 3) => 23+ ​ 2) (( 2 + 3)* 4 ) => 23+4* ​ 3) (1 + (( 2 + 3)* 4 ))=> 123+4*+ [按照运算次序,从左到右排列] ​ 4)((1 + (( 2 + 3)* 4 )) – 5 )=> 123+4*+ 5- ​ 后缀表达式为:1 2 3 + 4 * + 5 – 2.1.2 、方法二:利用表达式树 ​ 首先将中缀表达式转换为表达式树,然后后序遍历表达式树,所得结果就是后缀表达式。将中缀表达式转化为表 达式树的方法:表达式树的树叶是操作数,而其他节点为操作符,根结点为优先级最低且靠右的操作符(如上述表达 式优 先级最低是-和+,但

QT之编码风格(low-level)

亡梦爱人 提交于 2020-03-05 15:33:25
原文: https://wiki.qt.io/Qt_Coding_Style 缩进 用4个空格进行缩进 是空格,不是tab 声明变量 在单独的一行声明每一个变量 避免过短或者无意义的变量名(例如:“a”, “rbarr”, “nughdeget”) 单个字符只能用在诸如计数器或者临时变量等作用明显的场合 只有当确定需要这个变量的时候,我们才去声明它 // Wrong int a , b ; char * c , * d ; // Correct int height ; int width ; char * nameOfThis ; char * nameOfThat ; 变量名或者函数名以小写字母开始,变量名后面的每一个连续的单词要用大写字母开始 避免缩写 // Wrong short Cntr ; char ITEM_DELIM = ' ' ; // Correct short counter ; char itemDelimiter = ' ' ; 类总是以大写字母开始。公共类以字母’Q’跟上一个大写字母开始。公共函数大多以字母’q’开始。 首字母缩略词是驼峰式的(e.g. QXmlStreamReader, not QXMLStreamReader) 空格 使用空行将语句组合在一起 始终只使用一个空白行 始终在关键字之后和花括号前使用一个空格 // Wrong if (