ইনপুট হিসাবে একটি স্ট্রিং str1 দেওয়া হয়েছে। লক্ষ্য হল ইনপুট স্ট্রিং-এ একজোড়া অভিন্ন অক্ষরগুলির মধ্যে একটি '*' সন্নিবেশ করানো এবং একটি পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করে ফলাফল স্ট্রিংটি ফিরিয়ে দেওয়া৷
যদি ইনপুট স্ট্রিং হয় str1="সুস্থতা" তাহলে আউটপুট হবে "wel*lnes*s"
উদাহরণ
ইনপুট − str1="সুখ"
আউটপুট − যোগ করার পর স্ট্রিং * :hap*pines*s
ব্যাখ্যা − pp এবং ss জোড়ার মধ্যে * যোগ করলে ফলস্বরূপ স্ট্রিং পাওয়া যাবে hap*pines*s
ইনপুট − str1=”swimmmingggg pooool”
আউটপুট − যোগ করার পর স্ট্রিং * :swim*m*m*ming*g*g*g po*o*o*ol
ব্যাখ্যা − mm, gg এবং oo জোড়ার মধ্যে * যোগ করলে ফলস্বরূপ স্ট্রিং পাওয়া যায় swim*m*m*ming*g*g po*o*o*ol
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে স্ট্রিং str1 নিন। প্রতিটি পুনরাবৃত্তিতে মধ্যবিন্দু হিসাবে বর্তমান সূচক সহ str1 কে দুই ভাগে ভাগ করুন। যদি প্রথম সাবস্ট্রিং-এর শেষ অক্ষর পরবর্তী সাবস্ট্রিং-এর প্রথম অক্ষরের মতো হয়, তাহলে মূল স্ট্রিংকে সাবস্ট্রিং 1 হিসাবে সেট করুন এবং তারপরে '*' তারপরে সাবস্ট্রিং2। সাবস্ট্রিং2 এর দৈর্ঘ্য 0 হলে পুনরাবৃত্তি শেষ করুন।
-
ইনপুট স্ট্রিংটিকে str1 হিসাবে নিন এবং লেন হিসাবে এর দৈর্ঘ্য গণনা করুন।
-
ফাংশন addStar(string&s1, int i, int len1) s1 নেয়, এর দৈর্ঘ্য এবং বর্তমান সূচক ইনপুট হিসাবে এবং * যোগ করে যদি দুটি জোড়া অক্ষর একই হয়..
-
সূচক 0 থেকে i
পর্যন্ত s1 এর সাবস্ট্রিং হিসাবে tmp1 নিন -
সূচী i থেকে len1 + 1 পর্যন্ত s1 এর সাবস্ট্রিং হিসাবে tmp2 নিন।
-
tmp1 এর শেষ অক্ষর এবং tmp2 এর প্রথম অক্ষর সমান হলে s1=tmp1+’*’+tmp2 সেট করুন।
-
কল addStar(s1, i+1, len1); পরবর্তী পুনরাবৃত্তির জন্য।
-
শেষে প্রধান ভিতরে str1 প্রিন্ট করুন।
উদাহরণ
#include <iostream> using namespace std; void addStar(string& s1, int i, int len1){ string tmp1=s1.substr(0,i); string tmp2=s1.substr(i,len1+1); if (tmp2.length() == 0){ return; } if (tmp1[i-1] == tmp2[0]){ s1 = tmp1 + '*' + tmp2; } addStar(s1, i+1, len1); } int main(){ string str1 = "aabbcccdddd"; int len=str1.length(); addStar(str1, 0, len-1); cout << "String after adding * : "<<str1 << endl; return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
String after adding * : a*ab*bc*c*cd*d*d*d