#include <iostream>
#include <set>
#include <string>
using namespace std;
string s1,s2,f[82][82];
int n,m;
set<char> s;
void in() {
cin >> s1 >> s2;
n = s1.size() + 1, m = s2.size() + 1;
s.insert('?');
s.insert('*');
}
void granics() {
for (int i = 1; i < n; i++) {
if (s1[i-1] == '*') {
f[i][0] = f[i-1][0];
} else if (s1[i-1] == '?') {
f[i][0] = f[i-1][0] + 'A';
} else {
f[i][0] = f[i-1][0] + s1[i-1];
}
}
for (int i = 1; i < m; i++) {
if (s2[i-1] == '*') {
f[0][i] = f[0][i-1];
} else if (s2[i-1] == '?') {
f[0][i] = f[0][i-1] + 'A';
} else {
f[0][i] = f[0][i-1] + s2[i-1];
}
}
}
void TwoLetter(int i, int j) {
if (s1[i-1] == s2[j-1]) {
if (f[i-1][j-1] == "No solution!") {
f[i][j] = "No solution!";
} else {
f[i][j] = f[i-1][j-1] + s1[i-1];
}
} else {
f[i][j] = "No solution!";
}
}
void TwoQuestion(int i, int j) {
f[i][j] = f[i-1][j-1] + 'A';
}
void TwoStar(int i, int j) {
if (f[i][j-1].size() < f[i-1][j].size()) {
f[i][j] = f[i][j-1];
} else {
f[i][j] = f[i-1][j];
}
}
void QuestionLetter(int i, int j) {
f[i][j] = f[i-1][j-1] + s2[j-1];
}
void LetterQuestion(int i, int j) {
f[i][j] = f[i-1][j-1] + s1[i-1];
}
void StarLetter(int i, int j) {
if (f[i][j-1].size() < f[i-1][j].size()) {
f[i][j] = f[i][j-1] + s2[j-1];
} else {
f[i][j] = f[i-1][j] + s2[j-1];
}
}
void LetterStar(int i, int j) {
if (f[i][j-1].size() < f[i-1][j].size()) {
f[i][j] = f[i][j-1] + s1[i-1];
} else {
f[i][j] = f[i-1][j] + s1[i-1];
}
}
void StarQuestion(int i, int j) {
if (f[i][j-1].size() < f[i-1][j].size()) {
f[i][j] = f[i][j-1] + 'A';
} else {
f[i][j] = f[i-1][j] + 'A';
}
}
void out() {
/* for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << f[i][j] << "\t\t";
}
cout << "\n";
}*/
cout << f[n-1][m-1] << "\n";
}
int main () {
in();
granics();
for (int i = 1; i < n; i++) {
for (int j = 1; j < m; j++) {
if (s.find(s1[i-1]) == s.end() && s.find(s2[j-1]) == s.end()) {
TwoLetter(i,j);
} else if (s1[i-1] == '?' && s2[j-1] == '?') {
TwoQuestion(i,j);
} else if (s1[i-1] == '*' && s2[j-1] == '*') {
TwoStar(i,j);
} else if (s1[i-1] == '?' && s.find(s2[j-1]) == s.end()) {
QuestionLetter(i,j);
} else if (s2[j-1] == '?' && s.find(s1[i-1]) == s.end()) {
LetterQuestion(i,j);
} else if (s1[i-1] == '*' && s.find(s2[j-1]) == s.end()) {
StarLetter(i,j);
} else if (s2[j-1] == '*' && s.find(s1[i-1]) == s.end()) {
LetterStar(i,j);
} else if (s1[i-1] == '*' && s2[j-1] == '?') {
StarQuestion(i,j);
} else if (s1[i-1] == '?' && s2[j-1] == '*') {
StarQuestion(i,j);
}
}
}
out();
return 0;
}
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.