n对括号的有效组合数

参考:https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0

import java.util.ArrayList;
import java.util.Stack; public class Num9_6 {
//判断是否是合法的括号字符串
/*
* 遇到左括号入栈,遇到右括号则栈顶元素出栈(在栈不为空的情况下,栈为空则返回false),遇到其他字符则返回false
* 判断栈是否为空,为空则合法,不为空则不合法
*/
public boolean chkParenthesis(String A, int n) {
// write code here
if (n < 2)
return false;
Stack<Character> sc = new Stack<Character>();
for (int i = 0; i < A.length(); i++) {
if (A.charAt(i) == '(')
sc.push('(');
else if (A.charAt(i) == ')') {
if (sc.isEmpty())
return false;
sc.pop();
} else
return false;
}
if (sc.isEmpty())
return true;
return false;
}
//求n对括号的有效组合
/*
* 遵循括号的构成语法,如果左括号还有剩余则使用左括号,如果剩余的右括号比左括号多,则可以使用右括号
* 左括号与右括号都用尽了,则新生成了一个括号组合
*/
ArrayList<String> ans = new ArrayList<String>();
public ArrayList<String> getParenthesis(int n) {
String s = "";
getAll(n, n, s);
return ans;
}
public void getAll(int left, int right, String s) {
if (left == 0 && right == 0) {
ans.add(s);
}
if (left > 0) {
getAll(left - 1, right, s + "(");
}
if (right > 0 && right > left) {
getAll(left, right - 1, s + ")");
}
}
}

判断括号字符串是否为合法+求n对括号的所有组合的更多相关文章

  1. C# 判断一字符串是否为合法数字(正则表达式)

    判断一个字符串是否为合法整数(不限制长度) public static bool IsInteger(string s) { string pattern = @"^\d*$"; ...

  2. python实现判断一个字符串是否是合法IP地址

    #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:判断一个字符串是否是合法IP地址 ''' import re def jud ...

  3. 判断一个字符串是否是合法IP地址

    # -*- coding: utf-8 -*- """ @File:test06_判断ip地址是否合法.py @E-mail:364942727@qq.com @Time ...

  4. 判断一个字符串是否为合法IP

    输入任意一个字符串,判断是否为合法IP bool IsIPAddress(const char * str){ //先判断形式是否合法, //检查是否只包含点和数字 ; str[i] != '\0'; ...

  5. python点滴:判断字符串是否为合法json格式

    在一些情况下,我们需要判断字符串是否为合法json格式. 思路很简单:尝试对字符串使用json.loads(),如果不是合法json格式,则会抛出ValueError异常. 示例如下: import ...

  6. 求n对括号的合法组合

    一道经典的面试题,求n对括号有多少种合法的组合. 抽象为2n个位置,每个位置可以有2种取值,总共有2^2n个组合,附加约束条件是要符合括号的语法,用来剪枝. 括号语法的合法性条件: 初始化左括号和右括 ...

  7. [LeetCode] 678. Valid Parenthesis String 验证括号字符串

    Given a string containing only three types of characters: '(', ')' and '*', write a function to chec ...

  8. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  9. [LeetCode] Valid Parenthesis String 验证括号字符串

    Given a string containing only three types of characters: '(', ')' and '*', write a function to chec ...

随机推荐

  1. noip 2016 提高组总结(不是题解)

    小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...

  2. android studio 将library导出为jar 亲测成功

    本人使用的是helloChart这个开源项目,其主要用于图表,来自git 地址为:https://github.com/lecho/hellocharts-android 下载命令为 git clon ...

  3. OpenGL杂七杂八

    Projection Matrix 投影矩阵 3D -> 2D PFD_DOUBLEBUFFER 双缓冲 在图形图象处理编程过程中,双缓冲是一种基本的技术.我们知道,如果窗体在响应WM_PAIN ...

  4. Chapter 3 Phenomenon——1

    When I opened my eyes in the morning, something was different. 这天早上当我睁开眼睛的时候,一些事变得不同了. It was the li ...

  5. HUD 1171 Big Event in HDU(01背包)

    Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...

  6. 给go添加各种package

    go version 1.1.2 For example you need to install the webscoket pakeage try           go get code.goo ...

  7. Windows Search Service

    Windows Search Service是一个全方位的托管云服务,可以允许开发者通过.Net SDK或者REST API多种多样的搜索服务. 如果你想开发一个搜索服务,那么你的服务应该包含以下组件 ...

  8. 安装PHP

    './configure' '--prefix=/usr/local/php5.6.21' '--with-config-file-path=/usr/local/php5.6.21/etc' '-- ...

  9. mx51 IPU 透明处理

    Freescale MX51平台的透明处理根据bpp(bits_per_pixel)不同,处理方式有所不同. 透明处理涉及到两个图层的合并,这个合并操作是MX51 IPU的DP(Display pro ...

  10. snmp协议接口

    所有网络设备上都会支持smap,获取服务器的基本信息,这样就不用在客户端上装应用就可以检测到基本的信息,是基于socket开发 内存调用这些命令来提取服务器的信息 snmpgetlocalhost - ...