Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void wordPattern(string s, int index, string &str1, string &str2, unordered_set<char> &uniqueSet, unordered_map<char, string> &mapping){
- if(index >= str2.size()){
- string stringFormed = "";
- for(char c : str2){
- stringFormed += mapping[c];
- }
- if(stringFormed == str1){
- for(char c : str2){
- cout << c << ": " << mapping[c] << " ";
- }
- cout << '\n';
- }
- return;
- }
- if(s == ""){
- return;
- }
- if(uniqueSet.count(str2[index]) == 0){
- for(int i = 1; i < s.size(); i++){
- string substring = s.substr(0, i);
- string ros = s.substr(i);
- mapping[str2[index]] = substring;
- uniqueSet.insert(str2[index]);
- wordPattern(ros, index + 1, str1, str2, uniqueSet, mapping);
- uniqueSet.erase(str2[index]);
- }
- mapping.erase(str2[index]);
- }
- else{
- wordPattern(s, index + 1, str1, str2, uniqueSet, mapping);
- }
- }
- int main() {
- // your code goes here
- string str1, str2;
- cin >> str1 >> str2;
- unordered_set<char> uniqueSet;
- unordered_map<char, string> mapping;
- wordPattern(str1, 0, str1, str2, uniqueSet, mapping);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement