题目地址:https://leetcode-cn.com/problems/generate-parentheses/
解题思路:我的解题思路是通过二进制来进行遍历,(比如说"((()))"可以看成111000,三组括号的所有排列形式就是00000~111111,然后从中只取3个1的组合)虽然过了但是运行时间较长,题解给了一种回溯算法比较好。
class Solution { bool isValid(string s) { stack<char> q; for (int i = 0; i < s.size(); i++) { if (q.empty()) q.push(s[i]); else { if (q.top() == '('&&s[i] == ')') q.pop(); else q.push(s[i]); } } if (q.empty()) return true; else return false; } string trueString(int m,int n) { int flag = 0; int t = 2*n; char *ans=new char[t+1]; while (m) { if (m & 1) { flag++; ans[--t] = '('; } else ans[--t] = ')'; m = m >> 1; } ans[2*n] = '