Php Program To Check If A String Is Substring Of Another
Last Updated :
20 Jan, 2022
Given two strings s1 and s2, find if s1 is a substring of s2. If yes, return the index of the first occurrence, else return -1.
Examples :Â
Input: s1 = "for", s2 = "geeksforgeeks"
Output: 5
Explanation:
String "for" is present as a substring
of s2.
Input: s1 = "practice", s2 = "geeksforgeeks"
Output: -1.
Explanation:
There is no occurrence of "practice" in
"geeksforgeeks"
Simple Approach: The idea is to run a loop from start to end and for every index in the given string check whether the sub-string can be formed from that index. This can be done by running a nested loop traversing the given string and in that loop run another loop checking for sub-string from every index.Â
For example, consider there to be a string of length N and a substring of length M. Then run a nested loop, where the outer loop runs from 0 to (N-M) and the inner loop from 0 to M. For very index check if the sub-string traversed by the inner loop is the given sub-string or not.Â
PHP
<?php
function isSubstring( $s1 , $s2 )
{
$M = strlen ( $s1 );
$N = strlen ( $s2 );
for ( $i = 0; $i <= $N - $M ; $i ++)
{
$j = 0;
for (; $j < $M ; $j ++)
if ( $s2 [ $i + $j ] != $s1 [ $j ])
break ;
if ( $j == $M )
return $i ;
}
return -1;
}
$s1 = "for" ;
$s2 = "geeksforgeeks" ;
$res = isSubstring( $s1 , $s2 );
if ( $res == -1)
echo "Not present" ;
else
echo "Present at index " . $res ;
?>
|
Output:
Present at index 5
Complexity Analysis:Â
- Time complexity: O(m * n) where m and n are lengths of s1 and s2 respectively.Â
A nested loop is used the outer loop runs from 0 to N-M and inner loop from 0 to M so the complexity is O(m*n).
- Space Complexity: O(1).Â
As no extra space is required.
An efficient solution is to use a O(n) searching algorithm like KMP algorithm, Z algorithm, etc.
Please refer complete article on Check if a string is substring of another for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...