括号

正则指引-括号

只谈情不闲聊 提交于 2020-02-27 10:27:36
正则指引-括号 之前学习字符组和量词,量词是形容字符组的,但是有时候我们希望用量词来形容多个元素, 我们可以用括号完成,我们可以使用(...)把目标元素括起来,就可以把括号内部看成一个整体, 在括号外部使用量词,量词就会对括号内部的所有元素作用。 用括号改变量词的作用元素: re.research(r"^ab+$","ab"); != none //true re.research(r"^ab+$","abb"); != none //true re.research(r"^(ab)+$","abb"); != none //false re.research(r"^(ab)+$","abab"); != none //true 括号的这种能力就做分组,括号还可以配合"|"来使用,使用形式(...|...), 在括号内用|分隔子表达式形成多选分支,分支数量没有限制,整个多选分支看成单个元素, 只要其中某一个分支表达式匹配成功,整个表达式就匹配成功,都不能则失败。 多选结构,一般是(..|..),但是有时候没有括号,就相当于最外边有一个括号,把整体看成一组。 括号有了分组的功能,还有在使用括号之后,正则表达式会保存每一个分组真正的文本, 还可以通过group(num),方法来获取匹配的文本: re.research(r"(\d{4})-(\d{2})-(\d{2})","2010

Eclipse跳到了大括号

对着背影说爱祢 提交于 2020-02-25 20:41:33
Eclipse中的键盘快捷键跳转到示波器的右大括号是什么? #1楼 按Ctrl + Shift + P. 在Eclipse Juno之前,您需要将光标放在开口或右大括号之外。 在Juno中,游标可以在代码块中的任何位置。 #2楼 我发现如果选择的透视图与当前文件的类型不匹配,那么“转到匹配的大括号”不起作用。 但是,改变观点使其再次发挥作用。 因此,例如,当我打开一个PHP文件,但是,例如,Java透视图处于活动状态时,按Ctrl + Shift + P不会执行任何操作。 对于激活了PHP透视图的同一文件,按Ctrl + Shift + P会完全按照您的预期进行操作,并将光标放在关闭括号中,相对于它开始的那个。 #3楼 由于引用了快捷键Ctrl + Shift + P ,我只想添加一个非常有趣的功能:只需双击 { 右边,Eclipse就会选择开头 { 和相应的关闭 } 之间的整个代码块。 。 同样,双击关闭'}'的左边,eclipse将选择块。 #4楼 要选择内容,请使用Alt + Shift + 向上箭头 要选择直到下一个包装块的内容,请再次按此快捷方式 要返回一步,请按Alt + Shift + 向下箭头 。 当您需要在复杂表达式中选择内容并且不想遗漏某些内容时,这也是一个有用的快捷方式。 #5楼 将光标放在开口 或右 括号旁边,然后按下Ctrl + Shift +

什么是匿名函数?

孤者浪人 提交于 2020-02-25 12:48:39
在前端面试中面试官基本都会问到什么是匿名函数、什么是闭包函数。 本文就先来说一下什么是匿名函数。 匿名函数顾名思义就是没有名字的函数,通常我们所写的函数都是这样的: 1 function do(){ 2 // 执行代码 3 }; 4 5 // 调用 6 do(); 这种写法是定义了一个名为do的函数,并通过函数名称进行调用。 那如果没有名字是什么样子的啊? 1 function () { 2 // 执行代码 3 }; 这种写法在编译的时候会报错: Uncaught SyntaxError: Unexpected token ( 这是为什么呢?原来时因为浏览器在进行语法分析的时候发现这个函数根本没法执行。 那要为什么还要匿名函数呢?在编程语言中如果又个编码方式那这种编码方式肯定是能正常运行的,那该如何让匿名函数跑起来呢?再看下面的例子: var do = function () { // 执行代码 } do(); 这种函数大家肯定都知道,其实这种写法就是将匿名函数复制为变量do,再通过变量名执行函数。 (function(){ // 执行代码   console.log("打印成功"); })(); 上面代码是什么意思呢? 可以先把上面的代码分几个部分: 第一部分是括号里面的匿名函数,第二部分是加上括号的匿名函数,第三部分带上最后面执行用的括号。

20、有效的括号

故事扮演 提交于 2020-02-23 01:50:31
有效的括号 题目描述 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 思路分析 首先就会想到用栈。遍历该字符串,若当前字符为‘(’或‘[’或‘{’,直接入栈。若当前字符为’)’,栈为空则返回false,栈不为空判断栈顶元素是否为’(’,是则弹出,不是则返回false。遍历到‘]’或者’}’,情况类似。代码如下: public boolean isValid ( String s ) { if ( s == null || s . length ( ) == 0 ) return true ; Stack < Character > stack = new Stack < > ( ) ; for ( int i = 0 ; i < s . length ( ) ; i ++ ) { char c = s . charAt ( i ) ; if ( c == '(

立即执行函数IIFE

萝らか妹 提交于 2020-02-20 10:18:13
立即执行行数顾名思义: 很多时候我们在js中定义一个函数后,而此函数我们需要他在定义的时候便执行,且只需要执行该函数一次,比如数据初始化函数; 这种情况下,定义一个函数就会浪费内存空间,这时我们就可以使用立即执行函数(Immediately-Invoked Function Expression 即IIFE)。 立即执行函数的常用两种语法: //匿名函数包裹在一个括号运算符中,后面跟一个小括号 (function(){ //... })() //匿名函数后面跟一个小括号,整个包裹在一个括号运算符中 (function(){ //... }()) (),!,+,-,=等 运算符 都能起到立即执行的作用,这些运算符的作用就是将匿名函数或函数声明转换为函数表达式。 注意两点: 一是函数体后面要有小括号() 二是函数体必须是函数表达式而不能是函数声明 (function (test) { //使用()运算符,输出12345 console.log(test); })(12345); (function (test) { //使用()运算符,输出12345 console.log(test); }(12345)); !function (test) { //使用!运算符,输出12345 console.log(test); }(12345); var fn = function (test)

经典栈类题目 括号匹配 Java stack

荒凉一梦 提交于 2020-02-20 04:03:23
在Java中栈直接继承Stack 使用Stack容器,不向queue是用LinkedList实现的。 s.push()压入 pop()弹出值并删除 思路: 寻找能配成(),太经典了,就像凑成aa 这样消除得到一样 应该先先到使用栈。 传送门 import java . util . Scanner ; import java . util . Stack ; public class Main { public static void main ( String [ ] args ) { Scanner cin = new Scanner ( System . in ) ; char [ ] a = cin . next ( ) . toCharArray ( ) ; Stack < Character > s = new Stack < Character > ( ) ; Stack < Integer > ss = new Stack < Integer > ( ) ; int x [ ] = new int [ 50005 ] ; int y [ ] = new int [ 50005 ] ; int flag = 0 ; int n = a . length ; int cnt = 0 ; for ( int i = 0 ; i < n ; i ++ ) { if ( a

【C语言零基础教程】- 预处理指令1 - 宏定义!

回眸只為那壹抹淺笑 提交于 2020-02-19 07:08:56
预处理指令简介 1. C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2. 为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 3. 预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 4. C语言提供的预处理指令主要有: 宏定义 、 文件包含 、 条件编译 这一篇先介绍一下宏定义,宏定义可以分为2种:不带参数的宏定义 和 带参数的宏定义。 一、不带参数的宏定义 1.一般形式 #define 宏名 字符串 比如#define ABC 10 右边的字符串也可以省略,比如#define ABC 2.作用 它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。 接下来写个程序根据圆的半径计算周长 转存失败 重新上传 取消 在第4行定义了一个叫PI的宏,在编译预处理之后,第8行中的2 * PI *radius就会变成2 * 3.14 * radius。 输出结果: 3.使用习惯与注意 1> 宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误 2>

括号匹配问题SWUSTOJ962

时光总嘲笑我的痴心妄想 提交于 2020-02-16 17:35:26
题目链接: 括号匹配问题 思路: 栈的应用: 遇到左括号入栈 遇到右括号,栈空则跳出循环,反之比较栈顶元素是否匹配,不匹配跳出循环 代码: # include <bits/stdc++.h> using namespace std ; int main ( ) { char s [ 500 ] ; cin >> s ; stack < char > p ; int ls = strlen ( s ) , i ; bool flag = true ; for ( i = 0 ; i < ls ; i ++ ) { if ( s [ i ] == '[' || s [ i ] == '(' ) p . push ( s [ i ] ) ; else { if ( p . empty ( ) ) { cout << "NO" ; flag = false ; break ; } else { if ( ( s [ i ] == ']' && p . top ( ) == '[' ) || ( s [ i ] == ')' && p . top ( ) == '(' ) ) p . pop ( ) ; } } } if ( flag ) { if ( p . empty ( ) ) cout << "YES" ; else cout << "NO" ; } return 0 ; } 来源:

LeetCode 22. 括号生成(Generate Parentheses)

不打扰是莪最后的温柔 提交于 2020-02-15 10:36:44
22. 括号生成 22. Generate Parentheses 题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] LeetCode 22. Generate Parentheses 中等 回溯算法 Java 实现 import java.util.ArrayList; import java.util.List; class Solution { public List<String> generateParenthesis(int n) { List<String> list = new ArrayList<>(); backtrack(list, "", 0, 0, n); return list; } public void backtrack(List<String> list, String str, int open, int close, int max) { if (str.length() == max * 2) { list.add(str); return; } if (open < max) { backtrack(list, str + "(", open +