जावा में एनाग्राम सबस्ट्रिंग सर्च के लिए एक उदाहरण निम्नलिखित है -
उदाहरण
public class Demo{ static final int max_val = 256; static boolean compare_vals(char my_arr_1[], char my_arr_2[]){ for (int i = 0; i < max_val; i++) if (my_arr_1[i] != my_arr_2[i]) return false; return true; } static void search_subs(String my_pattern, String my_text){ int pat_len = my_pattern.length(); int txt_len = my_text.length(); char[] count_pat = new char[max_val]; char[] count_txt = new char[max_val]; for (int i = 0; i < pat_len; i++){ (count_pat[my_pattern.charAt(i)])++; (count_txt[my_text.charAt(i)])++; } for (int i = pat_len; i < txt_len; i++){ if (compare_vals(count_pat, count_txt)) System.out.println("The element was found at index " + (i - pat_len)); (count_txt[my_text.charAt(i)])++; count_txt[my_text.charAt(i-pat_len)]--; } if (compare_vals(count_pat, count_txt)) System.out.println("The element was found at index " + (txt_len - pat_len)); } public static void main(String args[]){ String my_text = "ABNFGHABNJGH"; String my_pattern = "NFGH"; search_subs(my_pattern, my_text); } }
आउटपुट
The element was found at index 2
डेमो नामक एक वर्ग एक स्थिर मान और एक बूलियन फ़ंक्शन को परिभाषित करता है जो दो सरणियों में लेता है। यह स्थिर मान तक पहुंचने तक दोनों सरणियों पर पुनरावृति करता है। यह इस बात पर निर्भर करता है कि तुलना की गई सरणी में तत्वों की तुलना बराबर या असमान थी या नहीं, यह सही या गलत है।
एक अन्य स्थिर कार्य पाठ और पैटर्न में लेता है जिसे पाठ में जांचने की आवश्यकता होती है और पैटर्न और स्ट्रिंग पर पुनरावृति होती है। पैटर्न और स्ट्रिंग दोनों की संख्या में वृद्धि हुई है। फिर से एक 'फॉर' लूप चलाया जाता है और पैटर्न और टेक्स्ट दोनों की गिनती की तुलना की जाती है। यदि वे बराबर हैं, तो सूचकांक प्रदर्शित होता है। अन्यथा, एक प्रासंगिक संदेश प्रदर्शित होता है। मुख्य वर्ग में, पैटर्न और टेक्स्ट को परिभाषित किया जाता है और फ़ंक्शन को कहा जाता है।