উদাহরণস্বরূপ "abccddccefe" স্ট্রিংয়ের "ccddcc"
আমি একটি সমাধানের কথা ভেবেছিলাম তবে এটি ও (এন ^ 2) সময়ে চলে
আলগো 1:
পদক্ষেপ: এটি একটি নিষ্ঠুর শক্তি পদ্ধতি
অ্যারের চেয়ে i = 1 থেকে i কমের জন্য লুপের জন্য 2 রাখুন le
j = i + 1 থেকে j এর চেয়ে কম অ্যারে. দৈর্ঘ্যের চেয়ে কম- এইভাবে আপনি অ্যারে থেকে প্রতিটি সম্ভাব্য সংমিশ্রণের সাবস্ট্রিং পেতে পারেন
- একটি প্যালিনড্রোম ফাংশন রয়েছে যা পরীক্ষা করে কোনও স্ট্রিং প্যালিনড্রোম কিনা
- সুতরাং প্রতিটি স্ট্রিংয়ের জন্য (i, j) এই ফাংশনটি কল করুন, যদি এটি কোনও প্যালিনড্রোম হয় তবে স্ট্রিং ভেরিয়েবল এ সঞ্চয় করুন
- আপনি যদি পরবর্তী প্যালিনড্রোম সাবস্ট্রিং খুঁজে পান এবং এটি বর্তমানের চেয়ে বড় হয় তবে এটি বর্তমানের সাথে প্রতিস্থাপন করুন।
- শেষ পর্যন্ত আপনার স্ট্রিং ভেরিয়েবলের উত্তর থাকবে
সমস্যাগুলি: 1. এই আলগোটি ও (এন ^ 2) সময়ে চলে।
আলগো 2:
- স্ট্রিংটি বিপরীত করুন এবং এটিকে ডিফেরেন্ট অ্যারেতে সঞ্চয় করুন
- এখন উভয় অ্যারের মধ্যে বৃহত্তম মিলের সাবস্ট্রিং সন্ধান করুন
- তবে এটি ও (এন ^ 2) সময়েও চলে
আপনি কি ছেলেরা এমন একটি আলগো সম্পর্কে ভাবতে পারেন যা আরও ভাল সময়ে চলে? সম্ভব হলে ও (এন) সময়
O(n^2)
সাবস্ট্রিংগুলি *O(n)
মোট প্যালিনড্রোম কিনা তা পরীক্ষা করে নেওয়াO(n^3)
?