मान लीजिए हमारे पास दो स्ट्रिंग्स p और q हैं, और एक संख्या r भी है, हमें जांचना है कि क्या p को q में घड़ी की दिशा में कुछ वर्णों को अधिकतम r बार शिफ्ट करके बदला जा सकता है। उदाहरण के लिए, "c" को "e" में 2 घड़ी की दिशा में शिफ्ट करके बदला जा सकता है।
उदाहरण के लिए, यदि इनपुट है p = "abc", q = "ccc", r = 3, तो आउटपुट होगा True, क्योंकि हम "a" को "c" में 2 घड़ी की दिशा में शिफ्ट करके और फिर "b" को "c" में 1 घड़ी की दिशा में शिफ्ट करके, कुल 3 शिफ्ट में बदल सकते हैं।
हल करने के चरण
- यदि
aका आकारbके आकार के समान नहीं है, तोFalseलौटाएं। - यदि
k == 0औरa != b, तोFalseलौटाएं। su := 0iको 0 सेaके आकार तक:v := b[i] का ASCII - a[i] का ASCII- यदि
v >= 0, तोsu := su + v। - अन्यथा,
su := su + v + 26। - यदि
su > k, तोFalseलौटाएं।
Trueलौटाएं।
उदाहरण
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