एक प्रोग्राम या फ़ंक्शन लिखें, जो दो ASCII स्ट्रिंग्स दिए गए हैं Aऔर B, स्ट्रिंग्स का उत्पादन करेंगे A'और B'जहां आम सबस्ट्रिंग उनके स्थान पर उलट हैं। खोजने की प्रक्रिया A'इस प्रकार है:
A'शुरू में खाली है।- यदि पहला वर्ण
Aअंदर हैB, तो सबसे लंबा उपसर्ग खोजें,Aजिसका एक विकल्प हैB। इस उपसर्ग को निकालेंAऔर इसके उलट जोड़ेंA'। - अन्यथा, इस पहले पात्र को इसमें से निकालें
Aऔर इसमें जोड़ेंA'। Aखाली होने तक 2-3 चरण दोहराएं ।
खोजने के B'समान किया जाता है।
उदाहरण
चलो स्ट्रिंग्स पर विचार करें A = "abc bab"और B = "abdabc"। इसके लिए A', ऐसा होता है:
A = "abc bab": पहला वर्ण"a"B में है और A में सबसे लंबा उपसर्ग है जो B में पाया जाता है"abc"। हम इस उपसर्ग को A से हटाते हैं और इसके उलट A को जोड़ते हैं"cba"।A = " bab": पहला वर्ण" "B में नहीं है, इसलिए हम इस वर्ण को A से निकालकर A में जोड़ देते हैं।A = "bab": पहला वर्ण"b"B में है और A में सबसे लंबा उपसर्ग है जो B में पाया जाता है"b"। हम इस उपसर्ग को ए से हटाते हैं और इसके उत्क्रमण (जो अभी भी है"b") को ए 'में जोड़ते हैं ।A = "ab": पहला वर्ण"a"B में है और A में सबसे लंबा उपसर्ग है जो B में पाया जाता है"ab"। हम इस उपसर्ग को A से हटाते हैं और इसके उलट A को जोड़ते हैं"ba"।A = "": A खाली है, इसलिए हम रुक जाते हैं।
इस प्रकार हम प्राप्त करते हैं A' = "cba" + " " + "b" + "ba" = "cba bba"। बी 'के लिए, प्रक्रिया समान है:
B = "abdabc" -> "a" in A, remove prefix "ab"
B = "dabc" -> "d" not in A, remove "d"
B = "abc" -> "a" in A, remove prefix "abc"
इस प्रकार हम प्राप्त करते हैं B' = "ba" + "d" + "cba" = "badcba"।
अंत में, हम दो तारों को लौटाते हैं, अर्थात
(A', B') = ("cba bba", "badcba")
परीक्षण के मामलों
"abc bab", "abdabc" -> "cba bba", "badcba"
"abcde", "abcd bcde" -> "dcbae", "dcba edcb"
"hello test", "test banana" -> "hello tset", "tset banana"
"birds flying high", "whistling high nerds" -> "bisdr flyhgih gni", "wihstlhgih gni nesdr"
बाइट्स में सबसे छोटा कोड जीतता है।
"cba bba", "badcba"उद्धरण और कॉमा को शामिल करने के लिए सटीक आउटपुट की उम्मीद है ?