ধরা যাক, আমাদের একটি String.prototype ফাংশন লিখতে হবে যা তিনটি আর্গুমেন্ট নেয়।
- প্রথম আর্গুমেন্ট হল স্ট্রিং যা সাবস্ট্রিংগুলির জন্য অনুসন্ধান করা উচিত
- দ্বিতীয় যুক্তি হল স্ট্রিং, যে স্ট্রিংটি সরানো হবে তা হল
- তৃতীয় যুক্তি হল একটি সংখ্যা যা বলে n, স্ট্রিং থেকে সাবস্ট্রিং সরানোর nতম ঘটনা৷
স্ট্রিং থেকে subStr অপসারণ সফল হলে ফাংশনটি নতুন স্ট্রিংটি ফেরত দেবে, অন্যথায় এটি সমস্ত ক্ষেত্রে -1 ফিরে আসবে৷
উদাহরণ
নিম্নলিখিত কোড -
const str = 'jkdsttjkdsre'; const subStr = 'jk'; const num = 2; removeStr = function(subStr, num){ if(!this.includes(subStr)){ return -1; } let start = 0, end = subStr.length; let occurences = 0; for(; ;end < this.length){ if(this.substring(start, end) === subStr){ occurences++; }; if(occurences === num){ return this.substring(0, start) + this.substring(end,this.length); }; end++; start++; } } String.prototype.removeStr = removeStr; console.log(str.removeStr(subStr, num));
এই ফাংশনটি প্রথমে চেক করে:যদি subStr-এর একক ঘটনাও না থাকে তবে আমাদের প্রস্থান করা উচিত এবং ফিরে আসা উচিত -1
তারপর এটি স্লাইডিং উইন্ডো অ্যালগরিদম ব্যবহার করে স্ট্রিং-এ সাবস্ট্রের সংঘটনের সংখ্যা রেকর্ড করতে (উইন্ডোর আকার সাবস্ট্রের দৈর্ঘ্যের সমান)
প্রাথমিকভাবে, আমরা বামদিকের উইন্ডো থেকে শুরু করি তারপর উইন্ডোর শেষ পর্যন্ত আসল স্ট্রিংয়ের শেষ না হওয়া পর্যন্ত আমরা আমাদের উইন্ডো স্লাইড করতে থাকি। যদি আমাদের উপায়ে, ঘটনার সংখ্যা প্রয়োজনীয় ঘটনার সমান হয়, তাহলে আমরা সেই ঘটনাটিকে স্ট্রিং থেকে ছেঁটে ফেলি এবং এইভাবে প্রাপ্ত নতুন স্ট্রিংটি ফিরিয়ে দিই৷
যদি আমরা পুরো স্ট্রিং দিয়ে পুনরাবৃত্তি করি, তাহলে এর মানে হল স্ট্রিং-এ পর্যাপ্ত সাবস্ট্রের উপস্থিতি নেই এবং সেক্ষেত্রে আমাদের -1 ফিরে আসা উচিত এবং ফাংশন থেকে প্রস্থান করা উচিত।
সবশেষে, আমরা স্ট্রিং.প্রোটোটাইপে রিমুভস্ট্র প্রপার্টি যোগ করি যাতে আমরা এটিকে স্ট্রিং ফাংশন হিসেবে বলতে পারি।
আউটপুট
এটি কনসোলে −
নিম্নলিখিত আউটপুট তৈরি করবেjkdsttdsre