mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 16:26:47 +08:00
Added string pattern matching algorithm (#238)
This commit is contained in:
36
String/PatternMatching.js
Normal file
36
String/PatternMatching.js
Normal file
@ -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()
|
Reference in New Issue
Block a user