アナグラム部分文字列検索用の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」ループが実行され、パターンとテキストの両方のカウントが比較されます。等しい場合は、インデックスが表示されます。それ以外の場合は、関連するメッセージが表示されます。メインクラスでは、パターンとテキストが定義され、関数が呼び出されます。
-
文字列内の母音をカウントする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
-
アナグラム部分文字列検索用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2): for i in range(MAX): if arr1[i] != arr2[i]: &nbs