括号

我所习惯的代码规范

不羁的心 提交于 2019-11-28 21:42:59
其实代码规范不是一朝一夕就能养成习惯的,都是通过多敲多练习自己摸索出来的,也是个人习惯而已。 我所习惯的代码规范有以下几条: 1. 首先是空行。 空行可以使自己的代码更加清晰,有理有据,给其他人看的时候也是可以看得明白的,而且自己在找bug的时候,都是可以非常清楚地看出自己的错误,并且及时改正。 规则一:定义变量后要空行。尽可能在定义变量的同时初始化该变量,即遵循就近原则。如果变量的引用和定义相隔比较远,那么变量的初始化就很容易被忘记。若引用了未被初始化的变量,就会导致程序出错。 规则二:每个函数定义结束之后都要加空行。 总规则:两个相对独立的程序块、变量说明之后必须要加空行。比如上面几行代码完成的是一个功能,下面几行代码完成的是另一个功能,那么它们中间就要加空行。这样看起来更清晰。 2.其次是符号的一一对应和成对出现。 自己的习惯是花括号上下对齐,另起一行。不要写完左括号然后写内容最后再补右括号,这样很容易漏掉右括号,尤其是写嵌套程序的时候。 3.然后是空格。 (1)赋值运算符、关系运算符、算术运算符、逻辑运算符、位运算符,如 =、==、!=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=、>、<=、>、>=、+、-、*、/、%、&、|、&&、||、<<、>>、^ 等双目运算符的前后应当加空格。 (2)关键字之后要留空格。像 const、case

有效的括号python3

家住魔仙堡 提交于 2019-11-28 20:34:43
思路:本题括号排序特点和刚好与出入栈特点类似,因此考虑用出入栈来解决这个问题 判断字符串s是否为空,若为空返回F。 判断字符串的Length是否为奇数,若为奇数返回F。 建立字典,将左括号(’(’ , ‘[’ , ‘{’)设置为key,右括号(’)’ , ‘]’ , ‘}’)设置为value,一一对应。 如果字符a是左括号,则入栈,否则通过字典判断括号对应关系,若栈顶出栈括号与当前遍历括号不对应,则直接返回F。 代码: class Solution : def isValid ( self , s : str ) - > bool : if len ( s ) % 2 != 0 : return False if s is None : return False dic = { '{' : '}' , '[' : ']' , '(' : ')' } #建立字典 stack = [ ' ' ] #初始化栈 for i in s : if i in dic : #判断i是否为左括号 stack . append ( i ) #入栈 elif dic [ stack . pop ( ) ] != i : #栈顶出栈括号与当前遍历括号不对应 return False return len ( stack ) == 1 来源: CSDN 作者: root_Pi 链接: https:/

Python的小括号( )、中括号[ ]和大括号{}分别代表什么?

别等时光非礼了梦想. 提交于 2019-11-28 16:29:54
python语言最常见的括号有三种,分别是:小括号( )、中括号[ ]和大括号也叫做花括号{ },分别用来代表不同的python基本内置数据类型。 1、python中的小括号( ):代表tuple元组数据类型,元组是一种不可变序列。 2、python中的中括号[ ],代表list列表数据类型: 3、python大括号{ }花括号:代表dict字典数据类型,字典是由键对值组组成。冒号':'分开键和值,逗号','隔开组。用大括号创建的方法如下: 来源: https://www.cnblogs.com/becks/p/11415574.html

栈与单调队列

一曲冷凌霜 提交于 2019-11-28 16:05:15
栈 1.定义 栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。首先系统或者数据结构栈中数据内容的读取与插入(压入push和 弹出pop)是两回事!插入是增加数据,弹出是删除数据 。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。栈允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底。 2.性质 简而言之为先进后出。 3.应用 1.进栈(PUSH)算法 ①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②); ②置TOP=TOP+1(栈指针加1,指向进栈地址); ③S(TOP)=X,结束(X为新进栈的元素); 2.退栈(POP)算法 ①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②); ②X=S(TOP),(退栈后的元素赋给X): ③TOP=TOP-1,结束(栈指针减1,指向栈顶)。 代码实现 1.进栈(PUSH)算法 void PUSH(){ if(top>=n) printf("Wrong"); stack[++top]=a;

Sublime Text 3 应用技巧和诀窍

走远了吗. 提交于 2019-11-28 14:53:57
Sublime Text 3 应用技巧和诀窍 1.选择 以下是一些Sublime Text选择文本的快捷键: Command + D 选中一个单词 Command + L 选中一行 Command + A 全选 Ctrl + Command + M` 选中括号内所有内容 (编写CSS或JS时非常实用) Sublime Text还支持一次选中多行的操作:Furthermore, Sublime Text brings lets us select multiple lines at once, which can significantly boost your productivity. There are several ways to perform this feature: Command 按住Command键再点击想选中的行 Command + Ctrl + G (选中部分文本时) 按此键选中所有相同文本 Command + D (选中部分文本时) 直接选中下一次出现的该文本 2.CSS排序 CSS属性的顺序一般不重要,因为无论何种顺序浏览器都能正确渲染。但排序所有的属性还是有助于代码的整洁。在Sublime Text中,选中CSS属性后按F5就可以按字母顺序排序。 也可以使用 CSSComb 等第三方插件,更详细的控制排序的方法。 3.命令面板(Command

python函数

青春壹個敷衍的年華 提交于 2019-11-28 14:53:07
函数是什么?为什么要有函数? 所以的代码编程都是显示生活中的映射,你可以这样想,在生活中大家都用过洗衣机,有的一些洗衣机需要你自己去加水,排水,加洗衣液,等等....,python中的函数就相当于一台自动洗衣机,你只需要按下(调用)按钮,洗衣机就会自动帮你加水排水,加洗衣液,最后帮你甩干.函数存在的意义就是当我们以后需要再洗衣服的时候只需要一键启动洗衣机即可帮我们完成一系列的事情. 那python中的函数怎么写呢? 用关键字def去定义一个函数: 函数里面的功能都需要缩进到函数体里面 1 def fun(): 2 print("讲衣服放到洗衣机里" 3 print("按下启动按钮") 4 fun() # 调用,执行函数 实现一个简单的函数 总结一: 定义: def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。    def 是固定的,不能变,必须是连续的def三个字母,不能分开。。。它们要相亲相爱的在一起。    空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。    函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能    括号:是必须加的,先别问为啥要有括号,总之加上括号就对了! 注释:

LeetCode #22

半腔热情 提交于 2019-11-28 12:56:37
原文引用 https://www.dazhuanlan.com/2019/08/25/5d6223ed80689/ 最近重新开始了在刷题,也尽量多写一写吧。 指定有N对括号,需要输出所有可能的、形式上正确的括号组合情况。例如N=3时,有 [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 这五种可能的排列。 二、解题思路: 主要参考两篇文章: https://leetcode.com/problems/generate-parentheses/solution/ https://blog.csdn.net/runningtortoises/article/details/45625363 分别有这么几种思路: 1、暴力破解 把所有可能的串都输出来,然后逐个判断合法性。 2、回溯 3、Closure Number 这种思路是我最为喜欢的一种。我们可以发现,一个合法的串总是可以递归的表示为: 两个合法的子串以及一对括号。 想到这一点之后,其实后面的思路很自然的也能想通了: 两个子串的括号对数为N-1,我们只需要遍历所有可能的组合情况就行了,从(0, N-1), (1, N-2), …, (N-1, 0)。 这种思路实际上是按顺序生成 0, 1, …, N 的所有解。 4、增量 不断的判断左右括号的数量

程序员,你应该知道的数据结构之栈

眉间皱痕 提交于 2019-11-28 07:59:59
数据结构中的栈不要与 Java 中的栈混淆,他们俩不是一回事,数据结构中的栈是一种受限制的线性表,栈具有先进后出、后进先出的特点,因为栈只允许访问最后一个数据项,即最后插入的数据项。也许你会有疑问,栈既然有这么多限制,为什么不用数组或者链表而使用栈?在开发中,我们有特定的场景,根据特定的场景去选用数据结构,栈的适用场景非常多,比如浏览器的前进与后退、字符串括号的合法性等,我们使用栈来实现就比较好,因为栈相对数组、链表来说对外提供的接口要少很多,接口少了,出错的概率就减少了,对风险的可控性就提高了。 实现一个栈 从栈的定义中可以看出,栈主要有两个操作,一个是新增一条数据,我们叫做入栈,另一个是获取一条数据,称为出栈,下面两张图是入栈出栈示意图。 栈的实现有两种方式,一种是基于数组实现的,我们叫作顺序栈,另一种是基于链表实现的,我们叫作链式栈。下面是两种栈的实现代码 基于数组的顺序栈 /** * 基于数组的顺序栈 */ public class ArrayStack { // 栈最大容量 private int maxSzie; // 存放内容 private String[] array; // 栈顶元素 private int top; public ArrayStack(int size){ this.maxSzie = size; this.array = new String

js中(function(){…})()立即执行函数写法理解

柔情痞子 提交于 2019-11-28 05:08:22
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解。 ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此。要理解立即执行函数,需要先理解一些函数的基本概念。 函数声明、函数表达式、匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。 函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。 匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。 函数声明和函数表达式不同之处在于 : 1. Javascript引擎在解析javascript代码时会

linux中grep命令的用法

血红的双手。 提交于 2019-11-28 04:10:43
作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。 首先谈一下grep命令的常用格式为:grep [选项] ”模式“ [文件] grep家族总共有三个:grep,egrep,fgrep。 常用选项:   -E :开启扩展(Extend)的正则表达式。   -i :忽略大小写(ignore case)。   -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。   -n :显示行号   -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker   -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。   -o :只显示被模式匹配到的字符串。   --color :将匹配到的内容以颜色高亮显示。   -A n:显示匹配到的字符串所在的行及其后n行,after   -B n:显示匹配到的字符串所在的行及其前n行,before   -C n:显示匹配到的字符串所在的行及其前后各n行,context       模式部分:   1、直接输入要匹配的字符串,这个可以用fgrep(fast grep)代替来提高查找速度,比如我要匹配一下hello.c文件中printf的个数