समस्या विवरण
दो स्ट्रिंग्स str_1 और str_2 दी गई हैं। लक्ष्य स्ट्रिंग str1 में सबस्ट्रिंग str2 की घटनाओं की संख्या को पुनरावर्ती प्रक्रिया का उपयोग करके गिनना है।
एक पुनरावर्ती फ़ंक्शन वह होता है जिसकी परिभाषा के अंदर उसका अपना कॉल होता है।
उदाहरण
उदाहरण के लिए
इनपुट
str1 = "TPisTPareTPamTP", str2 = "TP";आउटपुट
सबस्ट्रिंग की पुनरावर्ती घटनाओं की संख्या: 4व्याख्या
सबस्ट्रिंग TP str1 में 4 बार आता है।इनपुट
str1 = "HiHOwAReyouHiHi" str2 = "Hi"आउटपुट
सबस्ट्रिंग की पुनरावर्ती घटनाओं की संख्या: 3व्याख्या
सबस्ट्रिंग Hi str1 में 3 बार आता है।नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
इस दृष्टिकोण में हम जावा में contains() मेथड का उपयोग करके str1 में str2 की घटना को खोजेंगे। यह true वापस करेगा यदि str2, str1 में मौजूद है। True होने की स्थिति में, जावा में replaceFirst() मेथड का उपयोग करके इसे "" से बदलकर str1 से पहली घटना को हटा दें और काउंट बढ़ाने के लिए रिटर्न वैल्यू में 1 जोड़ें।
- दो स्ट्रिंग्स को str1 और str2 के रूप में लें।
- पुनरावर्ती मेथड subsrting_rec(String str, String sub) स्ट्रिंग str और उसके सबस्ट्रिंग sub को लेता है और str में sub की घटनाओं की गिनती वापस करता है।
- जांचें कि क्या str.contains(sub) true है। (str में sub है)
- यदि true है तो str.replaceFirst(sub,"") का उपयोग करके sub की पहली घटना को "" से बदलें।
- इसे subsrting_rec(String str, String sub) के लिए एक पुनरावर्ती कॉल के अंदर करें।
- सभी पुनरावृत्तियों के अंत में सभी रिटर्न वैल्यू का योग गिनती है।
- परिणाम प्रिंट करें।
उदाहरण
public class Recursive{
public static void main(String args[]){
String str1 = "TPisTPareTPamTP", str2 = "TP";
System.out.println("सबस्ट्रिंग की पुनरावर्ती घटनाओं की संख्या: "+subsrting_rec(str1, str2));
}
static int subsrting_rec(String str, String sub){
if (str.contains(sub)){
return 1 + subsrting_rec(str.replaceFirst(sub, ""), sub);
}
return 0;
}
}आउटपुट
सबस्ट्रिंग की पुनरावर्ती घटनाओं की संख्या: 4