ইনপুট হিসাবে দুটি স্ট্রিং Str এবং subStr দেওয়া হয়েছে। লক্ষ্য হল সাবস্ট্রিং-এ উপস্থিত টেক্সট Str-এ সাবস্ট্রিং হিসাবে বিদ্যমান কিনা তা খুঁজে বের করা। স্ট্রিং X কে Y এর একটি সাবস্ট্রিং বলা হয় যদি Y তে অন্তত একবার পুরো X উপস্থিত থাকে৷ আমরা এটি করার জন্য একটি পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করব৷
উদাহরণস্বরূপ
ইনপুট − Str =“tutorialspoint” subStr=”Point”
আউটপুট − প্রদত্ত স্ট্রিংটিতে সাবস্ট্রিং নেই!
ব্যাখ্যা − স্ট্রিং পয়েন্ট টিউটোরিয়াল পয়েন্টের সাবস্ট্রিং নয়
ইনপুট − Str =“globalization” subStr=”global”
আউটপুট − প্রদত্ত স্ট্রিংটিতে সাবস্ট্রিং রয়েছে!
ব্যাখ্যা − স্ট্রিং গ্লোবাল হল গ্লোবালাইজেশনের সাবস্ট্রিং
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে আমরা চেক করি যে subStr একটি পুনরাবৃত্ত পদ্ধতিতে Str-এর সাবস্ট্রিং কিনা। পুনরাবৃত্তির জন্য ধাপগুলো হবে:-
-
1. উভয় স্ট্রিংকে একটি পুনরাবৃত্ত ফাংশনে পাস করুন যেখানে পয়েন্টার উভয় স্ট্রিংয়ের বর্তমান অক্ষর অবস্থান নির্দেশ করবে
-
যদি স্ট্রিং শেষ হয়ে যায় কিন্তু প্যাটার্নে আরও অক্ষর বাকি থাকে, তাহলে প্যাটার্ন খুঁজে না পাওয়ায় 0 ফেরত দিন এবং আমরা স্ট্রিংয়ের শেষে পৌঁছেছি।
-
যদি বর্তমান অক্ষরটি প্যাটার্নের শেষ অক্ষর হয় তবে এটি স্ট্রিং এ পাওয়া যায়, 1 রিটার্ন করুন।
-
যদি উভয় বর্তমান অক্ষর একই হয়, তাহলে উভয় পয়েন্টারকে পরবর্তী অবস্থানে নিয়ে যান।
-
যদি উভয় বর্তমান অক্ষর মেলে না, তাহলে স্ট্রিংয়ের জন্য পয়েন্টারটিকে পরবর্তী অবস্থানে নিয়ে যান।
-
অক্ষর অ্যারে Str এবং subStr হিসাবে ইনপুট স্ট্রিং নিন।
-
ফাংশন ম্যাচ (char *str1, char *substr1) দুটি সাবস্ট্রিং নেয় এবং যদি substr1 এবং str1 একই হয় তাহলে 1 প্রদান করে।
-
উভয় পয়েন্টার স্ট্রিংগুলিতে উপস্থিত অক্ষরগুলিকে নির্দেশ করে, প্রাথমিকভাবে শুরুর অবস্থানে৷
-
যদি সাবস্ট্রটি খালি থাকে, তাহলে 0 ফেরত দিন।
-
যদি উভয় স্ট্রিং খালি থাকে, তাহলে 0 ফেরত দিন।
-
যদি উভয় বর্তমান অক্ষর সমান হয় তবে ম্যাচ (str1 + 1, substr1 + 1) ব্যবহার করে পুনরাবৃত্তিমূলকভাবে পরবর্তী অক্ষরগুলির জন্য পরীক্ষা করুন
-
ফাংশন checksubString(char *str2, char *substr2) উভয় স্ট্রিং নেয় এবং str2 এ substr2 উপস্থিত থাকলে 1 প্রদান করে।
-
যদি str2 এবং substr2 দ্বারা নির্দেশিত বর্তমান অক্ষরগুলি একই হয় তবে ম্যাচ () ফাংশন ব্যবহার করে পরপর অক্ষরগুলি মেলে কিনা তা পরীক্ষা করুন। যদি এটি 1 ফেরত দেয় তবে 1 ফেরত দেয়।
-
যদি str2 এর শেষে পৌঁছে তাহলে 0 ফেরত দিন।
-
অন্যথায় checksubString(str2 + 1, substr2);
-
যদি সমস্ত শর্তের শর্ত ব্যর্থ হয় তবে চেকসাবস্ট্রিং(str2 + 1, substr2);
-
রিটার্ন মান অনুযায়ী ফলাফল প্রিন্ট করুন।
উদাহরণ
#include<iostream> using namespace std; int match(char *str1, char *substr1){ if (*substr1 == '\0'){ return 1; } if (*str1 == '\0'){ if(*substr1 != '\0'){ return 0; } } if (*str1 == *substr1){ return match(str1 + 1, substr1 + 1); } return 0; } int checksubString(char *str2, char *substr2){ if (*str2 == *substr2){ if(match(str2, substr2)){ return 1; } } if (*str2 == '\0'){ return 0; } else{ return checksubString(str2 + 1, substr2); } return checksubString(str2 + 1, substr2); } int main(){ char Str[]="tutorialspoint"; char subStr[]="point"; if(checksubString(Str,subStr)==1){ cout << "Given string contains substring!"; } else{ cout << "Given string does not contain substring!"; } return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
Given string contains substring!