Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <unordered_set>
- #include <algorithm>
- using namespace std;
- unordered_set<string> words;
- vector<string> ans;
- int main() {
- string s1, s2;
- cin >> s1 >> s2;
- words.reserve(1000000);
- ans.reserve(1000000);
- words.insert(s2);
- for (size_t i = 0; i < s2.size(); i++) {
- string cur = s2;
- cur.erase(i, 1);
- //cout << "i = " << i << " " << cur << endl;
- if (!words.count(cur)) {
- words.insert(cur);
- ans.emplace_back(std::move(cur));
- }
- }
- /*
- cout << "ans1" << endl;
- for (auto& item : ans) {
- cout << item << "\n";
- }
- */
- for (size_t i = 0; i <= s2.size(); i++) {
- for (size_t j = 0; j < s1.size(); j++) {
- string cur = s2;
- cur.insert(i, 1, s1[j]);
- if (!words.count(cur)) {
- words.insert(cur);
- ans.emplace_back(std::move(cur));
- }
- }
- }
- for (size_t i = 0; i < s2.size(); i++) {
- for (size_t j = 0; j < s1.size(); j++) {
- string cur = s2;
- cur[i] = s1[j];
- if (!words.count(cur)) {
- words.insert(cur);
- ans.emplace_back(std::move(cur));
- }
- }
- }
- sort(ans.begin(), ans.end());
- for (auto& item : ans) {
- cout << item << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement