ต่อไปนี้เป็นตัวอย่างสำหรับ Anagram Substring Search ใน Java −
ตัวอย่าง
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
คลาสชื่อ Demo กำหนดค่าคงที่และฟังก์ชันบูลีนที่รับในสองอาร์เรย์ มันวนซ้ำทั้งสองอาร์เรย์จนกว่าจะถึงค่าคงที่ ส่งคืนค่าจริงหรือเท็จขึ้นอยู่กับว่าองค์ประกอบในอาร์เรย์ที่เปรียบเทียบนั้นเท่ากันหรือไม่เท่ากัน
ฟังก์ชันสแตติกอื่นจะรับข้อความและรูปแบบที่ต้องตรวจสอบในข้อความและวนซ้ำบนรูปแบบและสตริง ทั้งจำนวนรูปแบบและสตริงจะเพิ่มขึ้น วนรอบ 'for' อีกครั้งและนับทั้งรูปแบบและข้อความ หากเท่ากัน ดัชนีจะปรากฏขึ้น มิฉะนั้น ข้อความที่เกี่ยวข้องจะปรากฏขึ้น ในคลาสหลัก มีการกำหนดรูปแบบและข้อความและเรียกใช้ฟังก์ชัน