题目:
分析:
对每个字符串进行处理,pair,第一个放字符,第二个放个数。
代码:
vector<pair<char,int> > f(string s)
{
vector<pair<char,int> > vp;
if(s.length()==0) return vp;
int c=s[0];
int n=1;
for(int i=1;i<s.size();i++)
{
if(s[i]==c) {
n++;
continue;
}
pair<char,int> p;
p.first=c;
p.second=n;
vp.push_back(p);
c=s[i];
n=1;
}
pair<char,int> p;
p.first=c;
p.second=n;
vp.push_back(p);
return vp;
}
int main()
{
string s;
vector<string> w;
vector<pair<char,int> > vp0=f(s);
int all=0;
for(int i=0;i<w.size();i++)
{
vector<pair<char,int> > vp=f(w[i]);
if(vp.size()!=vp0.size()) continue;
int ok=1;
for(int j=0;j<vp.size();j++)
{
if(vp[j].first!=vp0[j].first){
ok=0;break;
}
if(vp[j].second>vp0[j].second){
ok=0;break;
}
if(vp[j].second==vp0[j].second) continue;
if(vp0[j].second<3) {
ok=0;break;
}
}
if(ok) all++;
}
return all;
}