उदाहरण
import java.util.ArrayList;
public class Demo {
static boolean is_present(String my_str, ArrayList rem) {
for (String str : rem) {
if (str.equals(my_str))
return true;
}
return false;
}
static ArrayList distinct_pattern(String str) {
if (str.length() == 0) {
ArrayList base_Val = new ArrayList<>();
base_Val.add("");
return base_Val;
}
char ch = str.charAt(0);
String rem_str = str.substring(1);
ArrayList prev_str = distinct_pattern(rem_str);
ArrayList rem = new ArrayList<>();
for (String my_str : prev_str) {
for (int i = 0; i <= my_str.length(); i++) {
String f = my_str.substring(0, i) + ch + my_str.substring(i);
if (!is_present(f, rem))
rem.add(f);
}
}
return rem;
}
public static void main(String[] args) {
String my_str = "mnqm";
System.out.println("स्ट्रिंग के विशिष्ट क्रमपरिवर्तन हैं: ");
System.out.println(distinct_pattern(my_str));
}
}
आउटपुट
स्ट्रिंग के विशिष्ट क्रमपरिवर्तन हैं [mnqm, nmqm, nqmm, mqnm, qmnm, qnmm, mqmn, qmmn, mnmq, nmmq, mmnq, mmqn]
व्याख्या: Demo क्लास में 'is_present' नामक एक बूलियन फंक्शन है जो जांचता है कि स्ट्रिंग वास्तव में मौजूद है या नहीं। यह इस आधार पर true या false लौटाता है कि स्ट्रिंग में कुछ वर्ण हैं या नहीं। 'distinct_pattern' नामक एक अन्य फंक्शन एक ArrayList बनाता है।
'rem_str' नामक एक अन्य स्ट्रिंग परिभाषित की जाती है, जो स्ट्रिंग के सबस्ट्रिंग को संग्रहीत करती है। इस 'distinct_function' को 'rem_str' पास करके कॉल किया जाता है। इस तरह, स्ट्रिंग पर पुनरावृति की जाती है, और प्रत्येक वर्ण की स्थिति की जांच की जाती है, इससे पहले कि एक और विशिष्ट क्रमपरिवर्तन उत्पन्न हो। इस तरह, सभी डुप्लिकेट से बचा जाता है। अंत में, सभी अद्वितीय क्रमपरिवर्तन कंसोल पर प्रदर्शित होते हैं। मुख्य फंक्शन स्ट्रिंग को परिभाषित करता है, और इस स्ट्रिंग पर 'distinct_pattern' फंक्शन को कॉल किया जाता है। प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।
मुख्य बिंदु:
- पुनरावर्ती दृष्टिकोण का उपयोग करके क्रमपरिवर्तन उत्पन्न किए जाते हैं
- HashSet या ArrayList का उपयोग करके डुप्लिकेट हटाए जाते हैं
- प्रत्येक वर्ण को स्ट्रिंग की हर संभव स्थिति में डाला जाता है