#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool isMatch(string s, string p) {
if(p[0] == '.' && p[1] == '*')
return true;
bool ok = true;
int pozs = 0;
int pozp = 0;
p+=' ';
s+=' ';
while(pozp < p.size()-1)
if(((p[pozp]>='a'&&p[pozp]<='z')||p[pozp] == '.')&&p[pozp+1] == '*'){
while(s[pozs] == p[pozp] || p[pozp] == '.' && pozs<s.size()-1 && s[pozs] != p[pozp+2]){pozs++;}
pozp += 2;
}
else if(p[pozp+1]!='*' && p[pozp] >='a' && p[pozp] <= 'z'){
if(p[pozp] == s[pozs] || p[pozp] == '.')
pozs++,pozp++;
else
return false;
}
else if(pozp < p.size() - 1 && pozs == s.size() -1)
return false;
if(pozs == s.size() -1 &&p.size() - pozp == 1)
return true;
return false;
}/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
int main()
{
cout<< isMatch("abd",".*c");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgaXNNYXRjaChzdHJpbmcgcywgc3RyaW5nIHApIHsKICAgICAgICBpZihwWzBdID09ICcuJyAmJiBwWzFdID09ICcqJykKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICBpbnQgcG96cyA9IDA7CiAgICAgICAgaW50IHBvenAgPSAwOwogICAgICAgIHArPScgJzsKICAgICAgICBzKz0nICc7CiAgICAgICAgd2hpbGUocG96cCA8IHAuc2l6ZSgpLTEpCiAgICAgICAgaWYoKChwW3BvenBdPj0nYScmJnBbcG96cF08PSd6Jyl8fHBbcG96cF0gPT0gJy4nKSYmcFtwb3pwKzFdID09ICcqJyl7CiAgICAgICAgICAgIHdoaWxlKHNbcG96c10gPT0gcFtwb3pwXSB8fCBwW3BvenBdID09ICcuJyAmJiBwb3pzPHMuc2l6ZSgpLTEgJiYgc1twb3pzXSAhPSBwW3BvenArMl0pe3BvenMrKzt9CiAgICAgICAgICAgIHBvenAgKz0gMjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihwW3BvenArMV0hPScqJyAmJiBwW3BvenBdID49J2EnICYmIHBbcG96cF0gPD0gJ3onKXsKICAgICAgICAgICAgaWYocFtwb3pwXSA9PSBzW3BvenNdIHx8IHBbcG96cF0gPT0gJy4nKQogICAgICAgICAgICBwb3pzKysscG96cCsrOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihwb3pwIDwgcC5zaXplKCkgLSAxICYmIHBvenMgPT0gcy5zaXplKCkgLTEpCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgaWYocG96cyA9PSBzLnNpemUoKSAtMSAmJnAuc2l6ZSgpIC0gcG96cCA9PSAxKQogICAgICAgIHJldHVybiB0cnVlOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgfS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCldlbGNvbWUgdG8gR0RCIE9ubGluZS4KR0RCIG9ubGluZSBpcyBhbiBvbmxpbmUgY29tcGlsZXIgYW5kIGRlYnVnZ2VyIHRvb2wgZm9yIEMsIEMrKywgUHl0aG9uLCBKYXZhLCBQSFAsIFJ1YnksIFBlcmwsCkMjLCBPQ2FtbCwgVkIsIFN3aWZ0LCBQYXNjYWwsIEZvcnRyYW4sIEhhc2tlbGwsIE9iamVjdGl2ZS1DLCBBc3NlbWJseSwgSFRNTCwgQ1NTLCBKUywgU1FMaXRlLCBQcm9sb2cuCkNvZGUsIENvbXBpbGUsIFJ1biBhbmQgRGVidWcgb25saW5lIGZyb20gYW55d2hlcmUgaW4gd29ybGQuCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCmludCBtYWluKCkKewogICAgCiAgICBjb3V0PDwgaXNNYXRjaCgiYWJkIiwiLipjIik7CgoJcmV0dXJuIDA7Cn0=