ধরুন আমাদের একটি ইউনিক্স পাথ আছে, স্ট্রিংগুলির একটি তালিকায়, আমাদের তার সমাধানকৃত সংস্করণটি খুঁজে বের করতে হবে। যেমনটি আমরা ইউনিক্সে জানি, ".." পূর্ববর্তী ডিরেক্টরি এবং "।" বর্তমান ডিরেক্টরিতে থাকা বোঝায়। এখানে সমাধান করা দুটি চিহ্নের মূল্যায়ন নির্দেশ করে যাতে আমরা বর্তমানে যে চূড়ান্ত ডিরেক্টরিতে আছি তা পেতে পারি৷
সুতরাং, ইনপুট যদি path =["usr", "..", "usr", ".", "local", "etc", "foo"] এর মত হয়, তাহলে আউটপুট হবে ['usr', 'স্থানীয়', 'ইত্যাদি', 'foo'], যেহেতু অংশটি "/usr/../usr/./local/etc" উপস্থাপন করে যা "/usr/local/etc/foo"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- s :=একটি নতুন তালিকা
- পথে থাকা প্রতিটি উপাদানের জন্য, করুন
- যদি আমি '..' এর মত হয়, তাহলে
- যদি s খালি না হয়, তাহলে
- s থেকে শেষ উপাদান মুছুন
- যদি s খালি না হয়, তাহলে
- অন্যথায় যখন আমি '.' এর মতো না, তারপর
- s-এর শেষে i ঢোকান
- যদি আমি '..' এর মত হয়, তাহলে
- রিটার্ন এস
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, path): s = [] for i in path: if i == '..': if len(s) >0: s.pop() elif i !='.': s.append(i) return s ob = Solution() print(ob.solve(["usr", "..", "usr", ".", "local", "etc", "foo"]))
ইনপুট
["usr", "..", "usr", ".", "local", "etc", "foo"]
আউটপুট
['usr', 'local', 'etc', 'foo']