アナグラム部分文字列検索用のCプログラム
この問題では、サイズnのテキストとサイズmのパターンの2つの文字列が与えられます。私たちの仕事は、アナグラムの部分文字列検索用のプログラムを作成することです。
ここでは、テキスト内のすべてのパターンの出現とそのすべての順列(アナグラム)を見つける必要があります。
問題を理解するために例を見てみましょう
入力
text = “xyztrwqyzxfg” pattern = “xyz”
出力
Found at index 0 Found at index 7
この問題を解決するには、ラビンカープアルゴリズムと同様のアルゴリズムを使用する必要があります。 これは、数値を法としてすべての文字のASCII値を加算することにより、アナグラムの出現をチェックするために使用されます。次に、特性セットのウィンドウを使用して、合計を照合します。
このソリューションでは、テキストのウィンドウ内の文字の頻度と一致するパターンを格納する2つの配列が必要になります。次に、ウィンドウを1つずつスライドさせて、各未亡人の文字頻度を一致させ、一致するパターンを印刷します。
アナグラム部分文字列検索のプログラム
//アナグラム部分文字列検索のプログラム
例
#include <cstring> #include <iostream> #define MAX 256 using namespace std; bool matchPattern(char arr1[], char arr2[]){ for (int i = 0; i < MAX; i++) if (arr1[i] != arr2[i]) return false; return true; } void anagramSearch(char* pattern, char* text){ int M = strlen(pattern); int N = strlen(text); char patternArray[MAX] = { 0 }, textArray[MAX] = { 0 }; for (int i = 0; i < M; i++) { (patternArray[pattern[i]])++; (textArray[text[i]])++; } for (int i = M; i < N; i++) { if (matchPattern(patternArray, textArray)) printf("\nPattern found at index value : %d", (i-M)); (textArray[text[i]])++; textArray[text[i - M]]--; } if (matchPattern(patternArray, textArray)) printf("\nPattern found at index value: %d", (N-M)); } int main() { char text[] = "xyztrwqyzxfg"; char pattern[] = "xyz"; printf("Searching Anagram pattern in the string "); anagramSearch(pattern, text); return 0; }
出力
Searching Anagram pattern in the string Pattern found at index value: 0 Pattern found at index value: 7
-
アナグラム部分文字列検索用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2): for i in range(MAX): if arr1[i] != arr2[i]: &nbs
-
線形探索のためのPythonプログラム
この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム Start from the leftmost element of given arr[] and one by one compare element x with each element of arr[] If x matches with any of the element, return the index value. If x doesn’t match with any of elements in arr[] , return -1 or element no