मान लीजिए हमारे पास एक स्ट्रिंग है जो कुछ जानवरों की प्रारंभिक स्थितियों का प्रतिनिधित्व कर रही है। प्रत्येक जानवर तीन में से एक मान ले सकता है:L, इंगित करता है कि जानवर बाईं ओर चला गया है। आर, इंगित करता है कि जानवर दाईं ओर चला गया है। @, इंगित करता है कि जानवर अभी भी खड़ा है। एक दिशा में आगे बढ़ने वाले जानवर दूसरे जानवरों को तब तक उठाएंगे जब तक कि जानवर को विपरीत दिशा से बल न मिले। फिर, यह स्थिर रहेगा। जब जानवर हिलना बंद कर देता है तो हमें प्रत्येक जानवर का उन्मुखीकरण खोजना होता है।
इसलिए, यदि इनपुट s ="@@L@R@@@@@L" जैसा है, तो आउटपुट "LLL@RRRLLL"
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
स्तर:=s के समान आकार की एक सूची और -1 से भरें
-
q :=एक डबल एंडेड कतार
-
idx के लिए 0 से s के आकार की सीमा में है, करें
-
अगर s[idx] "R" के समान है या s[idx] "L" के समान है, तो
-
q के अंत में (idx, 0, s[idx]) डालें
-
-
-
l :=s के पात्रों की एक नई सूची
-
जबकि q खाली नहीं है, करें
-
(idx, new_level, dir) :=q का बायां तत्व, और इसे q से हटा दें
-
यदि स्तर [idx] -1 के समान है, तो
-
स्तर [idx] :=new_level
-
l[idx] :=dir
-
यदि dir "R" और idx + 1 <आकार l के समान है, तो
-
q के अंत में (idx + 1, new_level + 1, dir) डालें
-
-
अन्यथा जब dir "L" और idx - 1>=0 के समान हो, तब
-
q के अंत में (idx - 1, new_level + 1, dir) डालें
-
-
-
अन्यथा जब level[idx] new_level के समान हो, तब
-
अगर l[idx] dir के समान नहीं है, तो
-
l[idx] :="@"
-
-
-
-
l के तत्वों को जोड़कर एक स्ट्रिंग लौटाएं
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import deque class Solution: def solve(self, s): levels = [-1 for i in s] q = deque() for idx in range(len(s)): if s[idx] == "R" or s[idx] == "L": q.append((idx, 0, s[idx])) l = list(s) while q: idx, new_level, dir = q.popleft() if levels[idx] == -1: levels[idx] = new_level l[idx] = dir if dir == "R" and idx + 1 < len(l): q.append((idx + 1, new_level + 1, dir)) elif dir == "L" and idx - 1 >= 0: q.append((idx - 1, new_level + 1, dir)) elif levels[idx] == new_level: if l[idx] != dir: l[idx] = "@" return "".join(l) ob = Solution() s = "@@L@R@@@@L" print(ob.solve(s))
इनपुट
"@@L@R@@@@L"
आउटपुट
LLL@RRRLLL