力扣-20-有效的括号(简单)
20. 有效的括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]‘ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]“输出: false示例 4:输入: “([)]“输出: false示例 5:输入: “{[]}”输出: true
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
第一种解法这题看示例就能明白,就是找对称,括号必须是成对出现,如果不是就返回,闭合括号里的括号也必须是成对且对应。如**([)]**因为第一个闭合的 ) 里的括号不成对且不对应,返回false所以这个题我们可以考虑使用栈来存储,左括号压入栈,右括号和栈顶的左括号匹配,对不上返回fasle,匹配结束判断栈是否为空(因为括 ...
前缀表达式转后缀表达
1.什么是后缀表达式
百度百科:实现逆波兰式的算法,难度并不大,但为什么要将看似简单的中缀表达式转换为复杂的逆波兰式?原因就在于这个简单是相对人类的思维结构来说的,对计算机而言中序表达式是非常复杂的结构。相对的,逆波兰式在计算机看来却是比较简单易懂的结构。因为计算机普遍采用的内存结构是栈式结构,它执行先进后出的顺序。
后缀表达式就通过一定的排列顺序,将一个我们平时一眼就能看明白的数学算式转变为机器能够读懂的表达式。例如:
10 + 5 * 3转变为后缀表达式就是10 5 3 * +
(5 + 3) * 2转变为后缀表达式就是5 3 + 2 *
2.构建后缀表达式2.1.前缀表达式转后缀表达式的规则我们先用5 - ( 3 + 4 ) * 2 / 7来进行转换
先构造一个模拟栈 stack,和一个模拟队列 queue,栈中存放的是临时运算符,队列存放的就是后缀表达式
首先取出第一个字符 5,因为是数字,我们直接入队列。队列中现在就是{ 5 }
第二个字符是运算符 -,由于当前栈里没有元素,直接入栈。栈中现在就是[ - ]
第三个字符是运算符 (,由于是开括号,运 ...
将电脑上复制的文本推送给iPhone
由于博主用的不是Mac,所以体验不到iCloud的云剪贴板功能
有时候电脑上复制的链接或者文本需要在手机上操作,就需要经过聊天工具转发,很是繁琐。就用Python写了个工具,配合Bark使用,达到电脑给手机发信息的效果
手机安装Bark直接在App Store搜索Bark就好了App Store链接
复制Bark中的地址
替换代码中的url12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import PyHook3import pythoncomimport requestsimport win32clipboard as wcclass EventListener: keys = {} # 替换这里的地址 url = "https://api.day.app/替换这里的地址/" def onKeyboardEvent(self, event): # 监听键盘事件 ...
关于Vue中双向绑定失效和element-ui中resetFields()没有效果的解决方法
双向绑定失效起因是我的表单是写在Dialog中的,然后有些数据是需要从后台获取然后再重新赋值上去,因为我有一个字段是数组,且需要从后台获取,所以就出现了双向绑定没有失效了
查阅了下文档,发现在深入响应式原理一文中
检测变化的注意事项由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。尽管如此我们还是有一些办法来回避这些限制并保证它们的响应性。
大概就是说,我对响应式 Property(Data方法)中的对象或数组进行的修改不会触发更新。官方推荐使用this.$set(需要修改对象, 键名, 值)的形式进行修改
如下
12345678910111213141516data() { modelForm: { id: null, username: null, nickname: null, email: null, gender: null, age: null, roleIds: [] },},method: { modifyArray() { this ...
Liunx常用命令
查看端口占用 lsof -i tcp:22
查看所有进程 ps -aux
杀死进程 kill -9 [pid]
关于Jackson注解@JsonIgnore用在getter和setter方法上失效的解决办法
这两天在写项目的时候,有一个需求时用户信息的资料查询,只允许从JSON字符串序列化成Java对象,而Java对象转为JSON字符串应该时应该忽略。
经了解然后使用了@JsonIgnore注解
1234567891011121314@TableName(value = "user")public class User extends BaseEntity implements Serializable { @TableId(type = IdType.AUTO) private Integer id; private String username; private String password; @JsonIgnore public String getPassword() { return password; }}
想象总是美好的,但是现实总是残酷的理论上来说,我在getter方法上加了注解以后在序列化成JSON的时候应该不会取出password属性。然鹅,他却静静躺 ...
Python之包管理工具anaconda安装
什么是anaconda
Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 Conda 是为 Python 程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软件
用过maven和grade的同学应该能够理解,其实就是一个依赖包管理工具将我们平时去网上找包的下载在导入的工作进行省却,只需要一条命令即可
anaconda和miniconda他们之间的最大的区别就是一个带有常用的库一个是精简版,只有conda工具和python环境
安装
这里我们选择的是anaconda的安装,我们先去官网下载安装包https://www.anaconda.com/products/individual这是miniconda的下载地址https://docs.conda.io/en/latest/miniconda.html这里大家根据自己的需求来下载,我这里下载的是python版本3.7的
下载完成运行安装,一直下一步就好了这里没啥好说的
安装完成后最后一个是问你需不需要了解“Anaconda云”和“Ana ...
Tampermonkey导入自定义脚本
进入管理面板
点击➕号
粘贴脚本代码,然后按下ctrl+s保存即可