括号匹配(leetcode20)
简单的括号匹配问题。
思路
自己的思路
每次寻找最右的左括号,然后与与之相邻最近的没有被使用过的括号进行匹配 。
复杂度O(n^2)
答案思路
左括号入栈,右括号出站进行匹配。
复杂度O(n)
错误和优化:
1.忽略“([)]”这种情况。
2.忽略只有一个左括号的情况应判断该括号未被使用。
3.优化:如果字符串个数为奇数,返回错误。子串为空串返回0。
4.优化:用string而不是stack。操作方法为push_back(),back(),pop_back();
代码
自己
#include <vector>
#include <cstdio>
class Solution {
vector<int>use;
public:
bool match(char a,char b)
{
if(a == '(' && b == ')')return true;
if(a == '{' && b == '}')return true;
if(a == '[' && b == ']')return true;
return false;
}
bool isValid(string s)