কম্পিউটার

পাইথনে প্যালিনড্রোম লিঙ্কড তালিকা


ধরুন আমাদের একটি লিঙ্ক করা তালিকা আছে। তালিকার উপাদানগুলি অ্যাপলিন্ড্রোম তৈরি করছে কিনা তা আমাদের পরীক্ষা করতে হবে। তাই যদি তালিকার উপাদানটি [1,2,3,2,1] এর মত হয়, তাহলে এটি একটি প্যালিনড্রোম।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • fast :=head, slow :=head, rev :=None এবং পতাকা :=1

  • যদি মাথা খালি হয়, তাহলে সত্য ফেরত দিন

  • যখন দ্রুত এবং পরবর্তী ফাস্ট উপলব্ধ

    • যদি পরবর্তী ফাস্টের পরবর্তী উপলভ্য থাকে, তাহলে পতাকা সেট করুন :=0 এবং লুপ ভাঙুন

    • দ্রুত :=পরের রোজার পরের

    • temp :=স্লো, স্লো :=স্লো এর পরের

    • temp :=rev, এবং rev :=temp

      এর পরের
  • দ্রুত :=ধীরের পরের, এবং ধীরের পরের :=রেভ

  • যদি পতাকা সেট করা থাকে, তাহলে স্লো :=স্লো এর পরের

  • যখন দ্রুত এবং ধীর কোনটি নয়,

    • যদি দ্রুততার মান ধীরগতির মানের সমান না হয়, তাহলে মিথ্যা ফেরত দিন

    • দ্রুত :=দ্রুততার পরের, এবং ধীর :=ধীরের পরের

  • প্রত্যাবর্তন সত্য

উদাহরণ (পাইথন)

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

ক্লাস লিস্টনোড:def __init__(self, data, next =None):self.data =data self.next =nextdef make_list(elements):head =ListNode(elements[0]) উপাদানের উপাদানের জন্য[1:] :ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode(element) হেডক্লাস সমাধান(অবজেক্ট):def isPalindrome(self, head):fast,slow =head,head rev =None flag =1 মাথা না থাকলে:রিটার্ন True while fast এবং fast.next:if not fast.next.next:flag =0 break fast =fast.next.next temp =slow slow =slow.next temp.next =rev rev =temp #print (fast.val) fast =slow.next slow.next =rev যদি পতাকা:slow =slow.next while fast and slow:if fast.data !=slow.data:return False fast =fast.next slow =slow.next রিটার্ন ট্রুহেড =make_list([1,2,3,2,1])ob1 =Solution()print(ob1.isPalindrome(head)) 

ইনপুট

[1,2,3,2,1]

আউটপুট

সত্য

  1. পাইথনে লিঙ্ক করা তালিকায় নোড অদলবদল করার জন্য প্রোগ্রাম

  2. পাইথন - তালিকা প্যালিনড্রোম কিনা তা পরীক্ষা করুন

  3. পাইথন - প্যালিনড্রোম গণনা অনুসারে ম্যাট্রিক্স সাজান

  4. পাইথনে লিঙ্ক করা তালিকা থেকে m নোডের পরে n নোড মুছে ফেলার প্রোগ্রাম