Эффективность 678 Скобки

Дана строка, содержащая только три класса персонажа :(,) и *, написать функцию, чтобы проверить, является ли строка является действительной строкой. Действительно строка имеет следующие правила:

Любая скобка (должна иметь соответствующую правую скобку).
Любая правая скобка) должна иметь соответствующую левую скобку (.
Левую скобку (должно быть перед соответствующей правой скобкой).
* Может рассматриваться как единая правая скобка), или одна левой скобка (или пустая строка.
Пустая строка Он также считается действительной строкой.

Идеи:

каждый стек, а затем положить рассматривать (обход строки), а затем обсудить , как) случай,
в это время (индекс должен быть больше , чем
прежде , чем считаются)

class Solution {
    public boolean checkValidString(String s) {
        stack<int> left,star;
        for(int i=0;i<s.size();i++){
            if(s[i]=='(') left.push(i);
            else if(s[i]=='*') star.push(i);
            else {
                if(left.empty() && star.empty()) return false;
                if(!left.empty()) left.pop();
                else 
                    star.pop();
            }
        }
        while(!left.empty()&&!star.empty()){
            if(left.top()>star.top)return false;
            left.pop();
            star.pop();
        }
        return left.empty();
    }
}

рекомендация

отwww.cnblogs.com/Jun10ng/p/12354828.html
рекомендация