今日打卡…
非常抱歉,我真的忘了我们快乐的vector,我之前试着用string解决的…写的人快不行了…
bool ifExist(char test, char Is) {
switch (test) {
case '(':
if (Is == ')')
return true;
else
return false;
case '[':
if (Is == ']')
return true;
else
return false;
case '{':
if (Is == '}')
return true;
else
return false;
}
return false;
}
bool isValid(string s) {
vector<char> tmp;
for (int r = 0; r < s.size(); ++r) {
if (tmp.empty())
tmp.push_back(s[r]);
else {
if (ifExist(tmp[tmp.size() - 1], s[r]))
tmp.pop_back();
else
tmp.push_back(s[r]);
}
}
if (tmp.empty())
return true;
else
return false;
}
之前版本…
bool ifExist(string s, char test, int& r) {
//printf("Check%c\nCheckPointSite%d\n", test, r);
if (s[r] == ')' || s[r] == ']' || s[r] == '}')
return false;
if (r == s.size()) {
return false;
}
switch (s[r]) {
case '(':
if (s[r + 1] == s[r] + 1) {
r++;
return true;
}
else {
char tmp = s[r] + 1;
r++;
while (ifExist(s, s[r], r)) {
r++;
//printf("Check%c\nCheckPointSite%d\n", tmp, r);
if (s[r] == tmp) {
return true;
}
}
return false;
}
case'[':
case'{':
if (s[r + 1] == s[r] + 2) {
r++;
return true;
}
else {
char tmp = s[r] + 2;
r++;
while (ifExist(s, s[r], r)) {
r++;
//printf("Check%c\nCheckPointSite%d\n", tmp, r);
if (s[r] == tmp) {
return true;
}
}
}
default:
return false;
}
return r < s.size();
}
bool isValid(string s) {
if (s.size() == 1)
return false;
int r = 0;
bool OCC = true;
while (r < s.size()) {
OCC = ifExist(s, s[r], r);
if (OCC)
r++;
else
return false;
}
return OCC;
}
快乐