leetcode - Remove Invalid Parentheses
2014 단어 leetcode
https://leetcode.com/problems/remove-invalid-parentheses/
생각:
넓이를 우선적으로 훑어보다.최종 결과res로 돌아가기 전에 주의하세요!
class Solution
{
public:
// kuohao cur , kuohao
void removeInvalidParentheses_core(string &s,int begin,int kuohao,string &cur,vector &res)
{
//s[begin] '(' ')'
if(begin==s.size())//
{
if(kuohao!=0)
return;
if(res.empty() || res[0].size()==cur.size())
res.push_back(cur);
if(!res.empty() && res[0].size()s.size())
return;
if(s[begin]=='(' && (s.size()-begin-1>=1+kuohao))
{
int yaru=1,tmp_kuohao=kuohao;
cur.push_back(s[begin]);
int i=begin+1;
++tmp_kuohao;
while(i0)
{
cur.pop_back();
--yaru;
}
}
else if(s[begin]==')' && kuohao>0)
{
int yaru=1,tmp_kuohao=kuohao;
cur.push_back(s[begin]);
int i=begin+1;
--tmp_kuohao;
while(i0)
{
cur.pop_back();
--yaru;
}
}
// s[begin]
int i=begin;
i++;
int yaru=0;
while(i0)
{
cur.pop_back();
--yaru;
}
}
vector removeInvalidParentheses(string s)
{
if(s.empty())
{
return vector(1,"");
}
if(s.size()==1)
{
if(s[0]=='('||s[0]==')')
s.pop_back();
return vector(1,s);
}
int i=0;//s[i] '('
while(i(1,cur);
}
vector res;
removeInvalidParentheses_core(s,i,0,cur,res);
sort(res.begin(),res.end());
res.erase(unique(res.begin(),res.end()),res.end());
return res;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.