मान लीजिए कि हमारे पास दो तार p और q हैं, और एक संख्या r भी है, तो हमें यह जांचना होगा कि कुछ वर्णों को r समय पर दक्षिणावर्त स्थानांतरित करके p को q में बदला जा सकता है या नहीं। इसलिए, उदाहरण के तौर पर, "c" को 2 क्लॉकवाइज़ शिफ्ट का उपयोग करके "e" में बदला जा सकता है।
इसलिए, यदि इनपुट p ="abc", q ="ccc", r =3 जैसा है, तो आउटपुट ट्रू होगा, क्योंकि हम 2 क्लॉकवाइज शिफ्ट का उपयोग करके "a" को "c" में बदल सकते हैं और फिर " कुल 3 पारियों के लिए, 1 दक्षिणावर्त शिफ्ट का उपयोग करके b" को "c" में बदलें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि a का आकार b के आकार के समान नहीं है, तो
- झूठी वापसी
- यदि k, 0 के समान है और a, b के समान नहीं है, तो
- झूठी वापसी
- सु:=0
- i के लिए 0 से लेकर a के आकार तक के लिए, करें
- v :=b[i] का ASCII - a[i] का ASCII
- अगर v>=0, तो
- सु:=सु + वी
- अन्यथा,
- सु:=सु + वी + 26
- अगर सु> के, तो
- झूठी वापसी
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, a, b, k): if len(a) != len(b): return False if k == 0 and a != b: return False su=0 for i in range(len(a)): v = ord(b[i])- ord(a[i]) if v>=0: su+=v else: su+=v+26 if su>k: return False return True ob = Solution() print(ob.solve("abc", "ccc", 3))
इनपुट
"abc", "ccc", 3
आउटपुट
True