diff --git a/String/PatternMatching.js b/String/PatternMatching.js new file mode 100644 index 000000000..b6b64bb5b --- /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()