括号

Generate Parentheses -- leetcode

无人久伴 提交于 2020-03-21 07:47:00
题目描述: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. 题目大意: 给定整数 n,生成 n 个“()”排列。有 A n n 种。 For example, given n = 3, a solution set is: [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 思想: 规则:左括号的个数 大于等于 右括号的个数 假设我们已经打印了 m 个括号,此时 左括号剩余 left 个 , 右括号 剩余 right 个 。 是否可以继续打印左括号,取决于 剩余的左括号个数left是否大于0 ,如果大于0,则可以继续打印左括号。 是否可以打印右括号,在 剩余的右括号大于0 的前提下,还要满足 剩余左括号的个数left 小于 剩余右括号的个数right (即 已经打印的左括号个数 大于 已经打印的右括号个数 ),如若,剩余左括号的个数 left 大于 等于 剩余右括号的个数 right, 即已经打印的左括号个数 小于等于 右括号的个数(即:“相等情况:(())”“小于情况(不成立):())”),此时,再打印右括号,导致括号不匹配。 代码: #include

括号配对问题

落花浮王杯 提交于 2020-03-20 18:22:04
括号配对问题 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符 输出 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 样例输入 3 [(]) (]) ([[]()]) 样例输出 No No Yes #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int n; char str[10000]; void deal( char str[]); scanf("%d",&n); while(n--) { scanf("%s",str); deal( str); } } void deal( char str[]) { int len = strlen( str); int i,j,n,flag; if( len%2 != 0 || str[0] == ')' || str[0] == ']' ) { printf("No\n")

oo第一单元作业总结

非 Y 不嫁゛ 提交于 2020-03-18 17:18:41
oo第一单元作业总结 一、前言 第一单元作业主要内容为 表达式求导 ,其最终任务是一个支持简单幂函数和简单正余弦函数的导函数及其组合的求解问题。本文将从程序结构分析、bug分析、互测策略、对象创建模式等多个方面进行总结。 二、程序结构分析 第一次作业 总体架构: Main.java 中进行输入输出处理, Polynomial 管理项 Item 。 规模度量与风格探测: 主要问题在于 derivate 方法复杂度过高。 类耦合度分析: 第二次作业 总体架构: SineFunc 、 Const 、 CosineFunc 、 PowerFunc 、 XFunc 、 Function 均实现 Function 接口,其中定义了 derivate 和 toString 方法,所有基础函数因子由工厂模式 Factory 生成, Item 类内部使用 ArrayList 管理上述因子, Expression 类内部使用 ArrayList 管理Item项,底层逻辑整体结构为二维 ArrayList ,此外 FormatTest 和 InputProcessor 分别做输入格式判断与预处理,为交由工厂做准备。 规模度量与风格探测: 类耦合度分析: 第三次作业 总体架构: 底层逻辑沿用Task 2架构,不同的是将各类基础函数与加法乘法组合看做同一层,均实现 Item 接口。 规模度量与风格探测:

Leecode32 longest-valid-parentheses

巧了我就是萌 提交于 2020-03-17 22:29:13
题目描述 给出一个仅包含字符’(‘和’)'的字符串,计算最长的格式正确的括号子串的长度。 对于字符串"(()“来说,最长的格式正确的子串是”()",长度为2. 再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4. 分析 使用栈存放‘(’的下标,遍历输入的字符。遇到 ‘(’ 入栈,遇到‘)’出栈。 用 leftmost 指向 当前检查的合法括号序列 前一个下标。 遍历输入字符,下标为index,遇到‘(’入栈时: 将下标入栈。 遍历输入字符,下标为index,遇到‘)’出栈时: 如果栈状态为空,则说明没有匹配的(,leftmost = index ,表明要检查下一组括号。 如果栈不为空,则说明可以匹配。出栈。 如果此时栈顶不为空,则当前合法括号范围是 index - peek,更新最大值。 如果此时栈顶为空,则当前合法括号范围是 index - leftmost,更新最大值。 java代码 import java . util . * ; public class Solution { public int longestValidParentheses ( String s ) { if ( s == null || s . length ( ) <= 1 ) { return 0 ; } char arr [ ] = s .

打卡第十五天:有效的括号

十年热恋 提交于 2020-03-17 15:33:10
一、题目 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 二、代码实现 class Solution { private HashMap < Character , Character > mappings ; public Solution ( ) { this . mappings = new HashMap < Character , Character > ( ) ; this . mappings . put ( ')' , '(' ) ; this . mappings . put ( '}' , '{' ) ; this .

好用的IDEA插件

时光怂恿深爱的人放手 提交于 2020-03-17 02:07:47
目录 Plugins 1.大鸟 2.阿里代码审查工具 3.Lombok 4.括号对标记工具 5.翻译工具 6.代码统计工具 Plugins 1.大鸟 方便你在mapper.xml和mapper接口中快速切换 2.阿里代码审查工具 除了在写代码的时候会提示你代码和注释是否规范外,它也能检测你当前的类中有哪些不规范之处 3.Lombok 这个不用说了,必备吧。大家要是不了解一定要去学一下 4.括号对标记工具 括号嵌套多层的时候很恶心,这个工具会用颜色帮助你标记括号对 5.翻译工具 再也不用百度翻译了 6.代码统计工具 提供更详细的代码行统计记录 欢迎大家补充~~~ 来源: CSDN 作者: 刘桐ssss 链接: https://blog.csdn.net/Delicious_Life/article/details/104828918

C语言括号匹配问题

不羁的心 提交于 2020-03-16 18:27:56
C语言括号匹配问题 用C语言实现括号匹配算法。要求输入任意的包含括号的字符序列(不一定是表达式),都能判断是否匹配。在测试时,要求序列中既有括号,也要有普通字符,括号必须包含( )、[ ]、{ }这三种。 数组栈 代码 #include < stdio . h > #include < stdlib . h > #include < string . h > #define MAX_SIZE 50 typedef char datatype ; datatype stack [ MAX_SIZE ] ; int top = 0 , base = 0 ; void initial ( ) //初始化 { top = base = 0 ; } void push ( datatype x ) //进栈 { stack [ top ] = x ; } void pop ( ) //出栈 { top -- ; } char top_data ( ) //栈顶元素 { return stack [ top ] ; } int main ( ) { initial ( ) ; datatype str [ MAX_SIZE ] = { '\0' } ; gets ( str ) ; char ch [ MAX_SIZE ] = { '\0' } ; strcpy ( ch , str ) ;

leetcode 856. 括号的分数(Score of Parentheses)

China☆狼群 提交于 2020-03-14 06:21:24
目录 题目描述: 示例 1: 示例 2: 示例 3: 示例 4: 解法: 题目描述: 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。 示例 1: 输入: "()" 输出: 1 示例 2: 输入: "(())" 输出: 2 示例 3: 输入: "()()" 输出: 2 示例 4: 输入: "(()(()))" 输出: 6 提示: S 是平衡括号字符串,且只含有 ( 和 ) 。 2 <= S.length <= 50 解法: class Solution { public: int scoreOfParentheses(string S) { //( ( ( ) ( ) ) //( 4 ) // use -1 to represent '(' stack<int> stk; for(char ch : S){ if(ch == '('){ stk.push(-1); }else{ int val = stk.top(); int tmp = 0; while(val != -1){ tmp += stk.top(); stk.pop(); val = stk.top(); } stk.pop(); if(tmp == 0){ stk

软件工程结队作业二

六眼飞鱼酱① 提交于 2020-03-12 14:16:18
题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。 题目1:我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内、百以内等) 用户选择是否有括号、是否有小数 用户选择输出方式(如输出到文件、打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主) 角色分配 驾驶员:刘文彤 负责代码编写。 coding地址 领航员:冯雅婧 负责指导驾驶员,对其程序进行测试与评估。 博客地址 程序编写 #include<iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <windows.h> #include <windef.h> #include <math.h> #include<fstream> #include<iomanip> using namespace std; double nums[100]; char str[100]; int n, Max, flag, q = 1; int decimal, //

LeetCode 856. 括号的分数(Score of Parentheses)

北战南征 提交于 2020-03-11 12:37:35
856. 括号的分数 856. Score of Parentheses 题目描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。 LeetCode 856. Score of Parentheses 中等 示例 1: 输入: "()" 输出: 1 示例 2: 输入: "(())" 输出: 2 示例 3: 输入: "()()" 输出: 2 示例 4: 输入: "(()(()))" 输出: 6 提示: S 是平衡括号字符串,且只含有 ( 和 ) 。 2 <= S.length <= 50 Java 实现 import java.util.Stack; class Solution { public int scoreOfParentheses(String S) { int cur = 0; Stack<Integer> stack = new Stack<>(); for (char c : S.toCharArray()) { if (c == '(') { stack.push(cur); cur = 0; } else { cur = stack.pop() + Math.max(cur * 2, 1); } }