fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. bool chk(char ar[],char ch)
  6. {
  7. for(int i=0,len=strlen(ar);i<len;i++)
  8. {
  9. if(ch==ar[i])
  10. return true;
  11. }
  12.  
  13. return false;
  14. }
  15.  
  16.  
  17. int main() {
  18. ios_base::sync_with_stdio(false);
  19. cin.tie(NULL);
  20.  
  21. char good[30], str[100006], ar[100006], tmp[100006];
  22. unsigned long long n;
  23.  
  24. int qpos[1000006];
  25.  
  26. cin >> good;
  27. cin >> str;
  28. cin >> n;
  29.  
  30. bool star = false,ret = false;
  31.  
  32. int goodlen = strlen(good);
  33. int origlen = strlen(str);
  34.  
  35. int kt = 0;
  36.  
  37. for (int i = 0; i < origlen; i++) {
  38. if (ar[i] == '*') {
  39. star = true;
  40. } else if (ar[i] == '?') {
  41. qpos[kt++] = i;
  42. }
  43.  
  44. }
  45.  
  46.  
  47. while (n--) {
  48. static int k =0;
  49. cin >> ar;
  50. ret = true;
  51.  
  52. int len = strlen(tmp);
  53.  
  54. if (len == origlen || (len == origlen - 1 && star == true)) {
  55.  
  56. strcpy(ar, tmp);
  57.  
  58. for(int i=0;i<kt;i++)
  59. {
  60. if(chk(good,tmp[qpos[k++]])==false)
  61. {
  62. ret = false;
  63. break;
  64. }
  65.  
  66. }
  67.  
  68. if(ret)
  69. {
  70. cout<<"YES"<<endl;
  71. } else
  72. cout<<"NO"<<endl;
  73.  
  74.  
  75.  
  76. } else
  77. cout << "NO"<<endl;
  78. }
  79.  
  80.  
  81.  
  82. return 0;
  83. }
Success #stdin #stdout 0s 19304KB
stdin
ab
a?a
2
aaa
aab
stdout
NO
NO