假期打卡第二天

今日打卡…
非常抱歉,我真的忘了我们快乐的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;
}

快乐

猜你喜欢

转载自blog.csdn.net/AgaSS1225/article/details/112431886