Discover how computers find your words instantly in huge texts without reading every letter!
Why Substring Search Patterns in DSA Typescript?
Imagine you have a huge book and you want to find every place where a certain word appears. You try to read every page carefully and check each word one by one.
This manual way is very slow and tiring. You might miss some places or take a long time to find all matches, especially if the book is very big or the word appears many times.
Substring search patterns help computers quickly find where a smaller text appears inside a bigger text. They use smart tricks to skip unnecessary checks and find matches fast and correctly.
function findWord(text: string, word: string): number[] {
const positions: number[] = [];
for (let i = 0; i <= text.length - word.length; i++) {
if (text.substring(i, i + word.length) === word) {
positions.push(i);
}
}
return positions;
}function kmpSearch(text: string, pattern: string): number[] {
// KMP algorithm implementation
// Preprocess pattern to create lps array
// Use lps to skip characters while matching
return [];
}It enables fast and reliable searching of patterns inside large texts, making tasks like searching documents, DNA sequences, or logs efficient.
When you use the search box in a text editor or browser, substring search patterns help find your word instantly, even in very long documents.
Manual search is slow and error-prone for large texts.
Substring search patterns use clever methods to speed up finding matches.
This makes searching in big data fast and reliable.
Practice
Solution
Step 1: Understand substring search purpose
Substring search algorithms check if a smaller string (pattern) appears inside a bigger string (text).Step 2: Compare options with substring search definition
Only To find if a smaller string exists inside a larger string matches this goal. Sorting, reversing, or counting vowels are different tasks.Final Answer:
To find if a smaller string exists inside a larger string -> Option BQuick Check:
Substring search = find smaller string inside larger [OK]
- Confusing substring search with sorting or reversing strings
- Thinking substring search counts characters
- Mixing substring search with string length calculation
text contains substring pattern?Solution
Step 1: Recall TypeScript string methods
TypeScript strings have a method calledincludesto check substring presence.Step 2: Verify method names
Onlyincludesis valid.contains,has, andfindare not string methods in TypeScript.Final Answer:
text.includes(pattern) -> Option AQuick Check:
Use includes() to check substring presence [OK]
- Using non-existent methods like contains() or has()
- Confusing includes() with find() which is for arrays
- Forgetting parentheses after method name
const text = "hello world"; const pattern = "wor"; console.log(text.indexOf(pattern));
Solution
Step 1: Understand indexOf method
indexOfreturns the starting index of the substring if found, else -1.Step 2: Find substring position in text
In "hello world", substring "wor" starts at index 6 (0-based counting: h=0, e=1, l=2, l=3, o=4, space=5, w=6).Final Answer:
6 -> Option AQuick Check:
indexOf("wor") = 6 [OK]
- Counting index starting from 1 instead of 0
- Confusing indexOf with includes (which returns boolean)
- Assuming indexOf returns substring length
const text = "typescript";
const pattern = "script";
if (text.find(pattern)) {
console.log("Found");
} else {
console.log("Not Found");
}Solution
Step 1: Check string methods in TypeScript
Strings do not have afind()method. The correct method to check substring isincludes()orindexOf().Step 2: Verify other code parts
Semicolons are optional in TypeScript, pattern is declared, and if statement syntax is correct.Final Answer:
Using find() method on string which does not exist -> Option DQuick Check:
Strings have includes(), not find() [OK]
- Assuming find() works on strings like arrays
- Thinking semicolons are mandatory causing errors
- Misreading if statement syntax
pattern in string text. Which approach correctly finds multiple occurrences in TypeScript?Solution
Step 1: Understand multiple substring search
To find all occurrences, you must repeatedly search starting after the last found index.Step 2: Analyze each option
Use a loop with indexOf(pattern, startIndex) updating startIndex after each find uses a loop withindexOfand updates start index, which is correct. Use text.includes(pattern) repeatedly without changing index does not update index, so it loops infinitely or finds only once. Use text.indexOf(pattern) once and return that single index finds only one occurrence. Use text.findAll(pattern) method to get all indices uses a non-existent method.Final Answer:
Use a loop with indexOf(pattern, startIndex) updating startIndex after each find -> Option CQuick Check:
Loop with indexOf and updated start index finds all [OK]
- Not updating start index causing infinite loops
- Using includes() which returns boolean, not index
- Expecting findAll() method which does not exist
Ready to prove it?
Pass the test and this pattern moves unknown
