Дана строка, содержащая только три класса персонажа :(,) и *, написать функцию, чтобы проверить, является ли строка является действительной строкой. Действительно строка имеет следующие правила:
Любая скобка (должна иметь соответствующую правую скобку).
Любая правая скобка) должна иметь соответствующую левую скобку (.
Левую скобку (должно быть перед соответствующей правой скобкой).
* Может рассматриваться как единая правая скобка), или одна левой скобка (или пустая строка.
Пустая строка Он также считается действительной строкой.
Идеи:
(И каждый стек, а затем положить рассматривать (обход строки), а затем обсудить , как) случай,
в это время (индекс должен быть больше , чем прежде , чем считаются)
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();
}
}