ধরুন আমাদের একটি স্ট্রিং S আছে। দৈর্ঘ্য হল n। এই n বাক্সগুলি একে অপরের সংলগ্ন, i অবস্থানে একটি অক্ষর R প্রতিনিধিত্ব করে যে i-th বক্সটি ডান দিকে ঠেলে দেওয়া হচ্ছে। একইভাবে, i অবস্থানে L প্রতিনিধিত্ব করে যে i-th বক্সটি বাম দিকে ঠেলে দেওয়া হচ্ছে, একটি বিন্দু '।' একটি খালি স্থান নির্দেশ করে। প্রাথমিক কনফিগারেশন থেকে শুরু করে, প্রতিবার ইউনিটে, একটি বাক্স ডানদিকে ঠেলে পরবর্তী বাক্সটিকে ডানদিকে ঠেলে দিতে সক্ষম হয়, একই ক্রিয়া বাম দিকের জন্যও প্রয়োগ করা যেতে পারে। আমাদের সব বাক্সের চূড়ান্ত অবস্থান খুঁজে বের করতে হবে যখন আর কোনো নড়াচড়া সম্ভব নয়।
সুতরাং, যদি ইনপুট R..R...L. এর মত হয়, তাহলে আউটপুট RRRRR.LL হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- N :=স্ট্রিংয়ের আকার
- আন্দোলন :=N আকারের অ্যারে, 0s দিয়ে পূরণ করুন
- m :=0
- আমি 0 থেকে N রেঞ্জের জন্য, কর
- যদি স্ট্রিং[i] 'R' এর মত হয়, তাহলে
- m :=N
- অন্যথায় যখন স্ট্রিং[i] 'L' এর মত হয়, তাহলে
- m :=0
- অন্যথায়,
- m :=সর্বাধিক m - 1, 0
- আন্দোলন[i] :=আন্দোলন[i] + m
- যদি স্ট্রিং[i] 'R' এর মত হয়, তাহলে
- m :=0
- এর জন্য N - 1 থেকে -1 রেঞ্জের মধ্যে, 1 দ্বারা হ্রাস করুন, করুন
- যদি স্ট্রিং[i] 'L' এর মত হয়, তাহলে
- m :=N
- অন্যথায় যখন স্ট্রিং[i] 'R' এর মত হয়, তাহলে
- m :=0
- অন্যথায়,
- m :=সর্বাধিক m - 1, 0
- আন্দোলন[i] :=আন্দোলন[i] - m
- যদি স্ট্রিং[i] 'L' এর মত হয়, তাহলে
- রিটার্ন করুন ডট যোগ করে একটি স্ট্রিং তৈরি করুন যদি m 0 হয় অন্যথায় 'R' যখন m> 0 হয়, অন্যথায় m গতিশীল প্রতিটি উপাদানের জন্য 'L'।
উদাহরণ কোড
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def get_final_pos(string):N =len(string) movement =[0] * N m =0 in range(0, N):যদি স্ট্রিং[i] =='R':m =N elif স্ট্রিং[i] =='L':m =0 else:m =max(m - 1, 0) মুভমেন্ট[i] +=m m =0 i এর রেঞ্জে (N - 1, -1, -1):if string[i] =='L':m =N elif string[i] =='R':m =0 else:m =max(m - 1, 0) move[i] -=mreturn ""। যোগ দিনইনপুট
'R..R...L.'আউটপুট
RRRRR.LL।