博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
72. Generate Parentheses && Valid Parentheses
阅读量:4992 次
发布时间:2019-06-12

本文共 1535 字,大约阅读时间需要 5 分钟。

Generate Parentheses

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not。

思路:可用于卡特兰数一类题目。

void getParenthesis(vector
&vec, string s, int left, int right) { if(!right && !left) { vec.push_back(s); return; } if(left > 0) getParenthesis(vec, s+"(", left-1, right); if(right > 0 && left < right) getParenthesis(vec, s+")", left, right-1);}class Solution {public: vector
generateParenthesis(int n) { vector
vec; getParenthesis(vec, string(), n, n); return vec; }};

 

Valid Parentheses

 

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

思路: 栈。对 S 的每个字符检查栈尾,若成对,则出栈,否则,入栈。

class Solution {public:    bool isValid(string s) {        bool ans = true;        char ch[6] = {'(', '{', '[', ']', '}', ')'};        int hash[256] = {0};        for(int i = 0; i < 6; ++i) hash[ch[i]] = i;        string s2;        for(size_t i = 0; i < s.size(); ++i) {            if(s2 != "" && hash[s2.back()] + hash[s[i]] == 5) s2.pop_back();            else s2.push_back(s[i]);        }        if(s2 != "") ans = false;        return ans;    }};

 

转载于:https://www.cnblogs.com/liyangguang1988/p/3984575.html

你可能感兴趣的文章
静态类和单例模式区别
查看>>
团队冲刺第一天
查看>>
二分查找法查找数组元素下表
查看>>
第四章 数据类型
查看>>
php-cgi.exe
查看>>
5.7 Windows常用网络命令
查看>>
防抖(Debouncing)和节流(Throttling)
查看>>
SQL Server 查询当前行、上一行、下一行合并查询
查看>>
Python 学习笔记之——用 sklearn 对数据进行预处理
查看>>
0 window DOS窗口常用指令
查看>>
c++11特性与cocos2d-x 3.0之std::bind与std::function
查看>>
ARC078 D.Fennec VS. Snuke(树上博弈)
查看>>
VIM学习笔记一
查看>>
面向对象第四单元总结
查看>>
同源策略,Jsonp实现跨域
查看>>
二叉搜索树的后序遍历序列
查看>>
纯C#的ini格式配置文件读写
查看>>
每日分享
查看>>
【干货】大数据框架整理
查看>>
年轻人,能用钱解决的,绝不要花时间(转)
查看>>