Java
 Computer >> コンピューター >  >> プログラミング >> Java

アナグラム部分文字列検索用のJavaプログラム


以下は、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という名前のクラスは、定数値と2つの配列を受け取るブール関数を定義します。一定の値に達するまで、両方の配列を繰り返します。比較された配列内の要素が等しいか等しくないかに応じて、trueまたはfalseを返します。

別の静的関数は、テキストとテキストでチェックする必要のあるパターンを取り込み、パターンと文字列を反復処理します。パターンと文字列の両方のカウントがインクリメントされます。ここでも「for」ループが実行され、パターンとテキストの両方のカウントが比較されます。等しい場合は、インデックスが表示されます。それ以外の場合は、関連するメッセージが表示されます。メインクラスでは、パターンとテキストが定義され、関数が呼び出されます。


  1. 文字列内の母音をカウントするJavaプログラム

    以下が私たちの文字列だとしましょう- String myStr = "Jamie"; 同じ変数の母音を計算するので、変数count=0に設定します。すべての文字をループして母音を数えます- for(char ch : myStr.toCharArray()) {    ch = Character.toLowerCase(ch);    if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u

  2. アナグラム部分文字列検索用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs