From 5b3efe8d2c59c8805184e66e461d1d6fd8eede0a Mon Sep 17 00:00:00 2001 From: Thivagar Manickam Date: Sat, 1 Aug 2020 09:42:36 +0530 Subject: [PATCH] Added string pattern matching algorithm --- String/PatternMatching.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 String/PatternMatching.js diff --git a/String/PatternMatching.js b/String/PatternMatching.js new file mode 100644 index 0000000000..b6b64bb5b3 --- /dev/null +++ b/String/PatternMatching.js @@ -0,0 +1,36 @@ +/* +Pattern matching is case insensitive as +the inputs are converted to lower case before the +algorithm is run. + +The algorithm will run through the entire text and +return the starting index if the given pattern is +available in the text +*/ +const checkIfPatternExists = (text, pattern) => { + const textLength = text.length // Store the length of the text in a variable + const patternLength = pattern.length // Store the length of the pattern in a variable + + // Iterate through the text until the textlength - patternlength index + for (let i = 0; i <= textLength - patternLength; i++) { + // For each character in the text check if the subsequent character + // are matching the given pattern; if not break from the condition + for (let j = 0; j < textLength; j++) { + if (text[i + j] !== pattern[j]) break + + // For each iteration of j check if the value of + // j + 1 is equal to the length of the pattern + if (j + 1 === patternLength) { + console.log(`Given pattern is found at index ${i}`) + } + } + } +} + +const main = () => { + const text = 'AABAACAADAABAAAABAA' + const pattern = 'AABA' + checkIfPatternExists(text.toLowerCase(), pattern.toLowerCase()) +} + +main()