Computer >> Máy Tính >  >> Lập trình >> Java

Chương trình Java để tìm kiếm chuỗi con Anagram

Sau đây là một ví dụ cho Tìm kiếm chuỗi con Anagram trong Java -

Ví dụ

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);
   }
}

Đầu ra

The element was found at index 2

Một lớp có tên Demo xác định một giá trị không đổi và một hàm Boolean nhận trong hai mảng. Nó lặp lại trên cả hai mảng cho đến khi đạt được giá trị không đổi. Nó trả về true hoặc false tùy thuộc vào việc các phần tử trong mảng được so sánh được so sánh là bằng nhau hay không bằng nhau.

Một hàm tĩnh khác nhận vào văn bản và mẫu cần được kiểm tra trong văn bản và lặp qua mẫu và chuỗi. Cả số lượng mẫu và chuỗi đều tăng lên. Một lần nữa vòng lặp ‘for’ được chạy và số lượng của cả mẫu và văn bản được so sánh. Nếu chúng bằng nhau, chỉ số được hiển thị. Nếu không, một thông báo có liên quan sẽ được hiển thị. Trong lớp chính, mẫu và văn bản được xác định và hàm được gọi.