LeetCode 20 Generate Parentheses
2024-10-20 01:28:42
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
还是类似的括号匹配问题,这次是要生成所有可能的匹配组合,思路如下:
首先用迭代法穷举可能出现的所有情况,然后利用已有的isValid()判断是否匹配,进而决定是否储存到返回vector容器中。
class Solution {
public:
vector<string> generateParenthesis(int n)
{
mSize = n * ;
init();
string s;
genpa(-, s);
return ret;
}
bool isValid(string s)
{
stack<char> stk;
int nSize = s.size(); for(int i = ; i!= nSize; ++i)
{
if(s[i] == '{' || s[i] == '(' || s[i]== '[')
{
stk.push(s[i]);
}
else
{
if(stk.empty())
{
return false;
}
char cElem = stk.top();
if(cElem - s[i] ==- || cElem - s[i] == -)
{
stk.pop();
continue;
}
else
{
return false;
}
}
}
if(!stk.empty())
{
return false;
}
return true;
}
void genpa(int j, string s)
{
if(j == mSize -)
{
if(isValid(s))
{
ret.push_back(s);
}
return;
}
for(int i = ; i!= ; ++i)
{
genpa(j+, s+album[i]);
}
}
void init(void)
{
album[] = '(';
album[] = ')';
}
private:
int mSize;
vector<string> ret;
char album[];
};
思路类似,多举一反三。
最新文章
- QTP操作excel文档
- String 与StringBuffer的区别与使用
- android 项目学习随笔九(ListView加头布局)
- ArcGIS Engine中的8种数据访问
- 设置(TableViewController)通用框架
- WinSock网络编程基础(3)server
- Java 将两个有序数组合成为一个有序数组
- TextMesh Pro SpriteAsset Load From Assetbundle
- Centos6.8 yum安装MySQL5.6
- jQuery AJAX 方法 success()后台传来的4种数据
- mac和Linux的环境变量设置
- 6-2 铁轨 uva 514
- Win2012&;Win2008双系统启动菜单设置
- DOS和批处理基本命令
- JAVA进阶之路(一)
- 反击黑客之对网站攻击者的IP追踪
- svn回退到具体的版本
- 从零开始的Python学习Episode 16——模块
- Golang学习途径总结
- ZOJ 2060 A-Fibonacci Again