Naïve String Matching Algorithm in Python: Examples, Featured & Pros & Cons
By Rohit Sharma
Updated on May 05, 2025 | 6 min read | 11.69K+ views
Share:
For working professionals
For fresh graduates
More
By Rohit Sharma
Updated on May 05, 2025 | 6 min read | 11.69K+ views
Share:
Table of Contents
When there is a need to find an input pattern in a string of characters, coders and programmers use the string matching algorithm. Usually, in case of a short string, Python programmers prefer to use the naïve approach in which, the program checks each position in the input string for the query pattern. In case it matches, it gives an output with the position number.
Popular AI Programs
One of the biggest reasons why the naïve string matching algorithm is used is that it is fast and yields quite accurate results. Moreover, it does not require pre-processing. While the approach is simple, it still plays a foundational role in more complex applications, including those in Artificial Intelligence, especially in text analysis and natural language processing. In any case, we will be discussing these advantages at a later stage in this post.
Let’s first understand the algorithm for pattern search using the naïve approach.
Boost Your Programming Skills with AI & ML! Master advanced techniques beyond string matching with our expert-led Artificial Intelligence & Machine Learning Courses.
In the naïve string pattern search, the program tests the position of the input pattern P [1……i] in a string of characters T [1…..m].
Advance Your Tech Career with AI Expertise! Explore industry-ready programs designed to help you build cutting-edge AI skills:
Note that the length of the input text or string will always be greater than or equal to that of the pattern.
Machine Learning Courses to upskill
Explore Machine Learning Courses for Career Progression
Here is the naïve pattern search algorithm for different programming languages.
Begin
pat = pattern Size
str = string size
for i = 0 to (str – pat), do
for j = 0 to pat, do
if text[i+j] ≠ pattern[j], then
break the loop
done
if j == pat, then
display the position of i as pattern found
done
End
This algorithm is quite an important one in computer science, as it helps give search results as an ouput.
Read : Types of AI Algorithms You Should Know
Here is an example where the naïve pattern search approach is used in a code of python.
# Python program for Naïve String Matching
# Searching algorithm
def search(P, T):
X = len(P)
Y = len(T)
# A loop to shift P[] one by one */
for i in range(X – Y + 1):
j = 0
# For current index i, check
# for pattern match */
for j in range(0, X):
if (txt[i + j] != P[j]):
break
if (j == X – 1):
print(“Pattern found at position “, i)
# Driver Code
if __name__ == ‘__main__’:
T = “UPGRADEDUBUPGRAABUPGRADEDU”
P = “UPGRAD”
search(P, T)
Output:
Pattern found at position 0
Pattern found at position 17
Explanation: The first position is the 0th position. Since the pattern “UPGRAD” was first spotted here, the output showed that the pattern is found at position 0.
Similarly, the next pattern was found at the position 17.
FYI: Free Deep Learning Course!
There in only one best case for naïve pattern search algorithm, unlike the two worst cases.
The best case occurs when the first character in the pattern text is nowhere in the input string.
Example:
T [] = “UPGRADEDUHIJKLUPGRA”;
P [] = “TUPGRA”;
And therefore, the number of matching patterns case is O(n).
There are two worst cases in the naïve string searching approach.
T [] = “EEEEEEEEEEEEEEEE”;
P [] = “EEE”;
T [] = “EEEEEEEEEEED”;
P [] = “EEEED”;
In such cases, the number of comparisons in O(m*(n-m+1)).
String matching algorithm is meant for finding all the occurrences of a given pattern in a text.
Here are the top features of the algorithm.
Also read: Data Structure & Algorithm in Python
There is only one disadvantage of the naïve string matching approach, which is that it is inefficient. This is because when it has found a position, it does not use it again to find the other position. It goes back to the starting point and looks for the pattern over again. And so, it does not use the information from the previous shift again.
Check out the trending Python Tutorial concepts in 2024
The naïve string matching algorithm is the most preferred approach to finding the positions of said patterns in a given text for various reasons like no pre-processing requirement, no extra space for operation, etc. However, it cannot be used for rather larger texts because of its inefficiency to perform large operations faster.
We hope that this post gave you a substantially good idea about the naïve pattern search approach in python. To learn about the uses of this approach and get a broader understanding of the topic, get in touch with the experts at upGrad. We have specially designed courses for individuals looking to expand their skillset. Reach out to us today!
If you’re interested to learn more about AI, machine learning, check out IIIT-B & upGrad’s PG Diploma in Machine Learning & AI which is designed for working professionals and offers 450+ hours of rigorous training, 30+ case studies & assignments, IIIT-B Alumni status, 5+ practical hands-on capstone projects & job assistance with top firms.
Subscribe to upGrad's Newsletter
Join thousands of learners who receive useful tips
A naive string-matching algorithm is one that simply compares the two strings character by character. This naive algorithm is used by many early computer programs that implemented simple file searching functions. In other words, the strings are compared character for character and the algorithm stops once a mismatch is found. This is an inappropriate way to do string matching as it is slow and wasteful of memory. This is very inefficient since the number of strings in a text is humongous but the search query is only a few characters.
Unsatisfiability of 8-queens and related problems as NP-complete show that naïve string-matching algorithms have limitations. Naïve string-matching algorithm will not give you the solution. In case of string-matching it requires exponential time. So, if you have n strings to be matched, it will take 2n time to complete. To get around this problem an algorithm has been developed which has made the string-matching problem feasible. This algorithm, which is an exponential time algorithm, is called Aho-Corasick algorithm. This algorithm works on the principle of dynamic programming.
Optimization of naïve string-matching algorithms is done in two ways:
1) String database search: This is the best solution for database search. It is fast, but requires a huge budget.
2) Tries: These are a great alternative to the database, because they can be made from memory, which keeps them low-budget. You can easily represent the string in a binary tree form. Then, you just go through the tree, and check for the result. If you find that you are at the end of the tree, you have found a good match. There is no need to go back to the beginning of the tree. This algorithm is fast, but it does not allow for long strings to be compared.
834 articles published
Rohit Sharma is the Head of Revenue & Programs (International), with over 8 years of experience in business analytics, EdTech, and program management. He holds an M.Tech from IIT Delhi and specializes...
Speak with AI & ML expert
By submitting, I accept the T&C and
Privacy Policy
Top Resources