O(N*N)的算法
class Solution {
public:
bool isleft(char c)
{
if(c == '(' || c == '[' || c == '{') return 1;
return 0;
}
bool isright(char c)
{
if(c == ')' || c == ']' || c == '}') return 1;
return 0;
}
int isRelateleft(char right,char left)
{
if(right == ')' && left == '(') return 1;
if(right == ']' && left == '[') return 1;
if(right == '}' && left == '{') return 1;
return 0;
}
bool isValid(string s) {
int len = s.size();
for(int i=0;i<len;i++)
{
if(isright(s[i]))
{
bool flag = false;
for(int j = i-1;j>=0;j--)
{
if(isleft(s[j]))
{
if(isRelateleft(s[i],s[j]) == 1)
{
s[i] = 1;
s[j] = 1;
flag = true;
break;
}else{
return false;
}
}
}
if(!flag) return false;
}
}
for(int i=0;i<len;i++)
{
if(s[i]!=1) return false;
}
return true;
}
};