## Rabin-Karp Algorithm

Updated on 15-Jun-2020 19:24:52
Rabin-Karp is another pattern searching algorithm to find the pattern in a more efficient way. It also checks the pattern by moving window one by one, but without checking all characters for all cases, it finds the hash value. When the hash value is matched, then only it tries to check each character. This procedure makes the algorithm more efficient.The time complexity is O(m+n), but for the worst case, it is O(mn).Input and OutputInput: Main String: “ABAAABCDBBABCDDEBCABC”, Pattern “ABC” Output: Pattern found at position: 4 Pattern found at position: 10 Pattern found at position: 18AlgorithmrabinKarpSearch(text, pattern, prime)Input − The main ... Read More

## Naive Pattern Searching

Updated on 15-Jun-2020 18:34:58
Naïve pattern searching is the simplest method among other pattern searching algorithms. It checks for all character of the main string to the pattern. This algorithm is helpful for smaller texts. It does not need any pre-processing phases. We can find substring by checking once for the string. It also does not occupy extra space to perform the operation.The time complexity of Naïve Pattern Search method is O(m*n). The m is the size of pattern and n is the size of the main string.Input and OutputInput: Main String: “ABAAABCDBBABCDDEBCABC”, pattern: “ABC” Output: Pattern found at position: 4 Pattern found at ... Read More

## Manacher’s Algorithm

Updated on 15-Jun-2020 18:40:57
To find the longest palindromic substring from a string, we can use Manacher’s Algorithm. By selecting each character, we will try to find if there any palindrome using left and right pointer. There is another array to store information, from that information we can easily find how long the palindrome is. For each character, the array will store information. After traversing the whole string, we can find the longest palindromic subsequence from the created array.The time complexity of this algorithm is O(n).Input and OutputInput: String: “levelup” Output: Longest palindrome is: levelAlgorithmlongestPalindrome(text)Input − The text to find the longest palindromeOutput − ... Read More

## Knuth-Morris-Pratt Algorithm

Updated on 15-Jun-2020 18:49:35
Knuth Morris Pratt (KMP) is an algorithm, which checks the characters from left to right. When a pattern has a sub-pattern appears more than one in the sub-pattern, it uses that property to improve the time complexity, also for in the worst case.The time complexity of KMP is O(n).Input and OutputInput: Main String: “AAAABAAAAABBBAAAAB”, The pattern “AAAB” Output: Pattern found at location: 1 Pattern found at location: 7 Pattern found at location: 14AlgorithmfindPrefix(pattern, m, prefArray)Input − The pattern, the length of pattern and an array to store prefix locationOutput − The array to store where prefixes are locatedBegin    length ... Read More

## kasai’s Algorithm

Updated on 15-Jun-2020 19:00:01
Kasai’s Algorithm is used to get the Longest Common Prefix (LCP) array from suffix array. At first suffix arrays are found. After that Kasai's algorithm takes the suffix array list to find LCP.For the LCP array, it takes O(m log n), where m is pattern length and n is the length of the text. The Kasai’s Algorithm, it takes O(n) for searching the pattern in the main string.Input and OutputInput: Main String: “banana” Output: Suffix Array : 5 3 1 0 4 2 Common Prefix Array : 1 3 0 0 2 0AlgorithmbuildSuffixArray(text)Input: The main stringOutput: The suffix array, built ... Read More

## Efficient Construction of Finite Automata

Updated on 15-Jun-2020 17:31:15
By constructing Finite Automata, we can simply perform the pattern searching in texts. At first, we have to fill a 2D array to make the transition table of the finite automata. Once the table is created, the searching procedure is simple. By starting from the first state of the automaton, when we reach the final state, it means that the pattern is found in the string.For finite automata construction, the time complexity is O(M*K), M is the pattern length and the K is a number of different characters. The complexity of main pattern searching is O(n).Input and OutputInput: Main String: ... Read More

## Boyer Moore Algorithm

Updated on 15-Jun-2020 17:41:15
It is another approach of Boyer Moore Algorithm. Sometimes it is called the Good Suffix Heuristic method. For this case, a preprocessing table is created as suffix table. In this procedure, the substring or pattern is searched from the last character of the pattern. When a substring of main string matches with a substring of the pattern, it moves to find other occurrences of the matched substring. It can also move to find a prefix of the pattern which is a suffix of main string. Otherwise, it moves the whole length of the pattern.Input and OutputInput: Main String: “ABAAABCDBBABCDDEBCABC”, Pattern: ... Read More

## Bad Character Heuristic

Updated on 15-Jun-2020 17:45:08
The bad character heuristic method is one of the approaches of Boyer Moore Algorithm. Another approach is Good Suffix Heuristic. In this method we will try to find a bad character, that means a character of the main string, which is not matching with the pattern. When the mismatch has occurred, we will shift the entire pattern until the mismatch becomes a match, otherwise, pattern moves past the bad character.Here the time complexity is O(m/n) for best case and O(mn)for the worst case, where n is the length of the text and m is the length of the pattern.Input and ... Read More

## Anagram Pattern Search

Updated on 15-Jun-2020 17:47:44
Anagrams are basically all permutations of a given string or pattern. This pattern searching algorithm is slightly different. In this case, not only the exact pattern is searched, it searches all possible arrangements of the given pattern in the text.To solve this problem, we will divide the whole texts into several windows of length same as patterns. Then count on each character of the pattern is found and stored in an array. For each window, we also try to find the count array, then check whether they are matching or not.The time Complexity of Anagram Pattern Search Algorithm is O(n).Input ... Read More

## Aho-Corasick Algorithm

Updated on 15-Jun-2020 16:35:18
This algorithm is helpful to find all occurrences of all given set of keywords. It is a kind of Dictionary-matching algorithm. It uses a tree structure using all keywords. After making the tree, it tries to convert the tree as an automaton to make the searching in linear time. There are three different phases of Aho-Corasick Algorithm. These are Go-to, Failure, and Output. In the go-to stage, it makes the tree using all the keywords. In the next phase or in the Failure Phase, it tries to find the backward transition to get a proper suffix of some keywords. In the ... Read More