मान लीजिए हमारे पास एक स्ट्रिंग s और एक संख्या k है। अब स्ट्रिंग में प्रत्येक वर्ण या तो डॉट ('.') या 'x' है, जहां डॉट खाली स्थान इंगित करता है और 'x' व्यक्ति को इंगित करता है। हमें जांचना है कि क्या ऐसी स्थिति चुनना संभव है जहां हम और हमारे निकटतम व्यक्ति के बीच की दूरी कम से कम k हो। (यहां प्रत्येक पड़ोसी इंडेक्स के बीच की दूरी 1 है)।
उदाहरण के लिए, यदि इनपुट है s = "x...x..", k = 2, तो आउटपुट होगा True, क्योंकि हम s[2] या s[6] पर खड़े हो सकते हैं।
हल करने के चरण
pos := sमेंxका स्थान, यदि मौजूद नहीं है तोpos = -1।- यदि
pos == -1याpos >= k, तोTrueलौटाएं। last_x := posdist_min := 2*k - 1- अनंत लूप करें:
next_x := sमेंlast_x+1से अंत तकxका स्थान (यदिxमौजूद नहीं है, तो -1)।- यदि
next_x != -1, तो:- यदि
next_x - last_x - 1 >= dist_min, तोTrueलौटाएं। last_x := next_x
- यदि
- अन्यथा:
- यदि
len(s) - last_x - 1 >= k, तोTrueलौटाएं। Falseलौटाएं।
- यदि
Noneलौटाएं।
उदाहरण
class Solution:
def solve(self, s, k):
pos = s.find("x")
if pos == -1 or pos >= k:
return True
last_x = pos
dist_min = 2*k - 1
while True:
next_x = s.find("x", last_x+1)
if next_x != -1:
if next_x - last_x - 1 >= dist_min:
return True
last_x = next_x
else:
if len(s) - last_x - 1 >= k:
return True
return False
return None
ob = Solution()
print(ob.solve("x...x..", 2))
इनपुट
"x...x..", 2
आउटपुट
True