アナグラム部分文字列検索用の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