括号

第十九章 一般控制问题

你。 提交于 2019-11-30 05:38:05
布尔表达式 用 ture 和 false 做布尔判断; 隐式地比较布尔值与 true 和 false ; 简化复杂的表达式; 拆分复杂的判断并引入新的布尔变量; 把复杂的表达式做成布尔函数; 用决策代替复杂的条件; 编写肯定性质的布尔表达式; 在 if 语句中,把判断条件从否定形式转换为肯定形式,并且互换 if 和 else 子句中的代码; 用狄摩根定理简化否定的布尔判断; 用括号使布尔表达式更清晰; 用一种简单的计数技巧来世括号对称; 理解布尔表达式是如何求值的; 按照数轴的顺序编写数值表达式; 与0比较的指导原则; 隐式地比较逻辑变量; 把数和0相比较; 在C中显式地比较字符和零终止符(`\0`); 把指针与 NULL 相比较; 布尔表达式常见问题; 在C家族语言中,应该把常量放在比较的左端; 在C++中,可以考虑创建预处理宏来替换&&,||和==; 复合语句(语句块) 复合语句指的是一组语句,该组语句被视为一条单一的语句,用于控制程序流。符合语句使用指导原则: 把括号对一起写出; 用括号来把条件表达清楚。 空语句 空语句即一条仅含分号的语句。 小心使用空语句; 为空语句创建一个 DoNothing() 预处理宏或者内联函数; 考虑如果换用一个非空的循环体,是否会让代码更清晰。 驯服危险的深层嵌套 深层嵌套与软件首要技术使命——管理复杂度——是相违背的。

#587. 天天和不可描述

别来无恙 提交于 2019-11-30 04:37:03
【题目描述】: 天天和()是好朋友,然而总是唱反调。对于一个有() 的字符串,天天总是会把()内的所有东西都倒过来读。 比如对于字符串abc(def) ,天天看到的就是abcfed 。 括号里面可能是空的,也有可能套有多个括号,比如说abc(hello)(world)lcy()x(owq(zrt)),天天看到的就是abcollehdlrowlcyxzrtqwo 。 因为(owq(zrt))首先变成了(trz)qwo ,接下来变成了zrtqwo ,zrt 被反转了两次,所以天天看到的还是zrt。 现在给你一个字符串,问你天天看到的是什么样子的? 【输入描述】: 一行一个字符串,表示原始的字符串。保证字符串内只有小写字母和(以及)组成。保证括号总是配对的。 【输出描述】: 一行一个字符串,表示天天看到的字符串。 【样例输入1】: abc(hello)(world)lcy()x(owq(zrt)) 【样例输出1】: abcollehdlrowlcyxzrtqwo 【样例输入2】: (y(g(el)da)nis) 【样例输出2】: singleday 【样例输入3】: mian() 【样例输出3】: mian 【时间限制、数据范围及描述】: 时间:1s 空间:256M 对于10% 的数据,保证只出现一对括号,字符串长度小于100,000。 对于另外30% 的数据,保证字符串长度小于100。

正则表达式中(括号) [方括号] {大括号}的区别

十年热恋 提交于 2019-11-30 04:35:12
之前遇到要用正则判断输入字符串的小需求中遇到了问题,连续的字符串不知道怎么判断。 如邮箱结尾的.com .cn .net等。 于是乎查阅资料: 括号() : 括号是多个匹配,它把括号内的当做一组来处理,限制一些多选的范围,比如上面的需求只能是com cn net结尾的用括号就是最好的选择。 括号能提取字符串,如(com|cn|net)就可以限制,只能是com或cn或net。 括号将括号里面的内容作为一组,这就是与[]不同的地方。 方括号[]: 方括号是单个匹配,如[abc]他限制的不是abc连续出现,而是只能是其中一个,这样写那么规则就是找到这个位置时只能是a或是b或是c; 方括号是正则表达式中最常用的,常用的用法有:[a-zA-Z0-9]匹配所有英文字母和数字,[^a-zA-Z0-9]匹配所有非英文字母和数字。 大括号{}: 大括号的用法很简单,就是匹配次数,它需要和其他有意义的正则表达式一起使用。 比如[a-c]{2}意思就是匹配a-c之间的一个字母出现且只出现两次; 比如(com){1}意思就是com必须出现一次 比如\W{1,3}意思就是非字母数字最少出现一次最多出现3次。 小结:正则表达式看起来很复杂但是学起来感觉一个顺序从左到右感觉又很容易,虽然正则表达式很容易懂,但是想要灵活应用却不容易。 来源: oschina 链接: https://my.oschina.net

中小学数学题生成程序代码分析

我的梦境 提交于 2019-11-30 03:36:25
整体的排版:     针对同一代码段,写出优点和认为可能有的改进的地方。 代码段1: 将用户信息封装成Student类。Java的类型能够把相同属性的对象抽象出来,无论是概念上还是编程上都会帮助我们理解整个系统的架构。     虽然前面说到有将用户信息封装成类,方便管理。但是整个项目仅仅只有两个类,另外一个是主类,我觉得结构可以更加优化一些,因为Java是面向对象语言,类是很重要的一个概念,可以实现功能的解耦。比如这个项目的登陆模块和出题模块都可以设计成类,一方面可以对整个系统的架构有更清晰的认知,另一方面起码可以降低维护难度(修Bug的难度)。我这一方面的能力也很薄弱,有时候不知道功能要细化到什么程度可以收手,导致分了太多类,管理这些类花很多时间 。   代码段2:   用户登录部分做法是重写类内的equals函数,实现了两个对象的比对来实现登录查询。之前我没想过这种方法,我的做法是拿遍历用户名来查找匹配的用户对象,王同学是通过遍历对象来匹配对象。 代码段3:   试卷的查重,王同学采用的是提取当前文件夹下的所有文件内容,然后使用For循环查重。 这里我觉得可以采用更好得方法,我之前也是这样的查重手段,受身边室友启发,决定改用Set容器存放试卷,因为Set容器本身自带去重功能,所以只要在程序初始化时载入本地试卷,新生成的试卷只要忘Set容器一放

个人项目优缺点分析

人盡茶涼 提交于 2019-11-30 03:34:39
优点: 1、 运用 java 语言进行编程,面向对象,结构清晰,能够让人明了每部分的功能,代码可读性较高 2、 进行了 UI 界面的设计和编写,与用户交互友好,每项功能都能在界面操作中体现出来 3、 将运算符号存到一个统一的字符数组中,并在生成算式时随机出的不同数值代表不同的运算符,便于使用并生成算式题目 4、 在随机添加括号时,考虑到会存在括号不合法和多余的情况,并进行了去除不合法和多余括号的操作 5、 对于每个难度的题目分别进行不同的清晰处理,代码逻辑性强,界面中分别有输入题号的输入框和切换难度的输入框,简洁美观 缺点: 1 、有些功能的实现代码臃肿,可以将代码简化,提高可读性。 2、 关键的功能上有代码的注释,但是还是注释有些少,在一些复杂的代码段如果能注释标示出来会更方便理解代码 3、 在添加括号时就可以考虑符不符合正常数学题目的格式,这样就可以不需要在添加完括号后再进行去括号操作。 来源: https://www.cnblogs.com/yangdaoyun/p/11552668.html

对结对项目同伴的优缺点分析

删除回忆录丶 提交于 2019-11-30 03:28:14
上个星期完成了个人项目,这篇博客是对结对项目的伙伴的个人项目的优缺点的评价。 优点: 1、代码清晰明了,有相应的注释便于理解,函数命名规范易于看出该函数的功能,功能大致符合要求,没有多余且无用的参数,if、while等语句格式符合规范。 2、使用了多个自己写的头文件,将功能分隔开来使主程序容易阅读 3、使用了类的私有成员即账户,密码,初始登录等级,使这几项易于联系,便于观察。 4、使用了vector容器来存储文件数据,能够方便的进行随机存取, 由于vector容器提供额外的方法来增加、删除元素,所以比数组操作高效,而且在使用的时候无需声明上限,随着元素增加他自己会增加长度。 5、对题目的合理性进行了检测,避免因为括号不符合规范如左右括号数量不对而产生的问题。对于括号的随机化考虑充分,还考虑到了一个数有多个括号在外围的情况,而且还能够将括号扩充应用到了初高中的题目当中。 6、程序运行界面清爽,提示清楚,交互体验良好,依次运行可以做到多次生成题目与文件。 缺点: 1、每个用户下小学初中高中的文件未用不同的文件夹保存而是全混合放在当前账户下。 2、切换账户的机会只有一次,只有在第一次出题的时候可以重新登录账户,这之后只能进行同一账户的小学初中高中难度的切换,我认为此处可以进行改进可以在程序中途不止一次的切换账户。 3、由于使用getline读取文件可能会产生读取空行问题

括号匹配

不问归期 提交于 2019-11-30 02:45:47
题目描述 苗苗今天刚刚学会使用小括号,不过他分不清小中大括号和尖括号,不知道怎么使用其他括号,他认为(>以及{]是正确的(其实是错误的),你能帮助他判断括号是否使用正确(匹配)吗? 解答要求 时间限制:1000ms, 内存限制:64MB 输入 输入文件包含六组测试数据,每组测试数据是一行只包含’(‘,’)’,’{‘,’}’,’[‘,’]’,’<’,’>’的字符串(长度不超过10000)。 输出 对于每组测试数据,如果使用正确输出yes,否则输出no。每个占一行。 输入样例 [> ([]{<>}) ({[<>]}) () () () 输出样例 1 no yes yes yes yes yes 提示 栈的应用: 依次读入字符,如果是左括号,将它放进栈,如果是右括号,而且栈顶元素是相对应的左括号,就把栈顶元素弹出,最后如果栈空就跳出循环,结果为no,因为这样说明栈中没有左括号;字符全都读入,如果栈空的话,就是yes,否则就是no。 // // Created by l50007414 on 2019/9/18. // #include <stdio.h> #include <string.h> void caculate1(char *data); typedef struct stack { char data[10000]; int top; } stack; int main()

ES6深入浅出-1 新版变量声明:let 和 const-2.视频 let和const

跟風遠走 提交于 2019-11-30 02:20:21
以前的var方式声明不好用 a=1回声明一个全局变量, 输出了1 说明a=1确实声明了一个全局变量。 但是你把放在其他的地方,就不是声明全局变量了。 如果外面有个全局变量a 那么函数里面就是给a赋值 有两层函数的时候,直接使用的是局部变量a,也就是fn函数里面的a 如果当前没有a就声明一个全局变量a。如果有a就利用这个a。下面当前就是有a的 这样用的就是最外面的var a 如果外面也没有,这时候才会去声明一个全局变量 所以a=1会声明一个全局变量是错的,只有在没有a这个变量的情况下才会隐式的去声明一个全局变量 所以a=1就是含义不明 不建议使用 这样打印出来一个a是对的 没有声明的情况下输出a页面会报错。没有a任何的定义就去使用它 没有报错 不执行的代码影响了,执行的代码 var a会自动提升到上面去,虽然它不会执行,它会给代码一些不符合逻辑的地方,var a 会乱提升 第二个问题 不使用全局变量,全局变量会经常有问题,比如声明了一个全局变量,别人用了我不知道。 用一个函数包起来。 这样var a就是一个局部变量。 函数给他一个名字,不管叫啥名,都是全局变量。 当前x是全局变量,frank是全局变量 把var a放在函数里面 那么a就是一个局部变量。 把a包含在函数x里面。那么函数x就是一个全部变量了。 匿名函数直接调用,在函数的最后面加个括号。但是语法错误。 避免这个语法错误

落爺英雄遲暮 提交于 2019-11-29 22:33:03
栈   栈是一种只允许在序列末端操作的数据结构。栈的末端也称之为栈顶。   栈的插入操作是将新元素压入栈顶,称为入栈。栈的删除操作是删除栈顶元素,称为出栈。由此可以看出,栈的特点是: 后入栈的元素先出栈,先入栈的元素后出栈 。   栈常用的操作有:入栈、出栈、取栈顶元素等。其接口定义如下: 1 public interface Stack<E> { 2 3 void push(E e); 4 5 E pop(); 6 7 E getTop(); 8 9 boolean isEmpty(); 10 11 int size(); 12 13 void clear(); 14 15 } Stack 顺序栈     顺序栈是采用顺序存储结构的栈。可以用一个数组来表示顺序栈,并指定栈顶位于数组末端。但是,数组的大小是预先确定的,存满之后无法继续插入新元素。所以在栈满时需要重新分配更大的空间进行扩容。   顺序栈中包括以下变量:    datas :存储元素的数组。    top :栈顶位标(栈顶元素的下一个位置)。top值也表示当前栈中的元素个数。    size :初始存储容量。    increment :数组扩容时增加的存储容量。   下图是一个初始容量为5,增量为3的栈:      可以看到其中已经有4个元素,此时top=4表示下一个入栈的元素应该放在datas[4]位置。 入栈  

LeetCode 第 154 场周赛 【“气球” 的最大数量】【一周中的第几天】【K 次串联后最大子数组之和】

旧时模样 提交于 2019-11-29 16:28:50
5189. “气球” 的最大数量 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。 示例 1: 输入:text = "nlaebolko" 输出:1 示例 2: 输入:text = "loonbalxballpoon" 输出:2 示例 3: 输入:text = "leetcode" 输出:0 代码: public int maxNumberOfBalloons ( String text ) { HashMap < Character , Integer > map = new HashMap < > ( ) ; // balloon map . put ( 'b' , 0 ) ; map . put ( 'a' , 0 ) ; map . put ( 'l' , 0 ) ; map . put ( 'o' , 0 ) ; map . put ( 'n' , 0 ) ; for ( int i = 0 ; i < text . length ( ) ; i ++ ) { char key = text . charAt ( i ) ; if ( map . containsKey ( key ) ) { map .