मान लीजिए कि हमारे पास दो तार 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