String matching with * (that matches with any) in any of the two strings

You are given two strings A and B. Strings also contains special character * . you can replace * with any alphabetic character. Finally, you have to tell whether it is possible to make both string same or not.

Examples:

Input : A = "gee*sforgeeks"
        B = "geeksforgeeks"
Output :Yes

Input :A = "abs*"
       B = "abds"
Output :No

Explanation: How we can solve above problem, Basically we three cases,
Case 1: Both string contains * at particular position, at that time we can replace both * with any character make the string equal at that position.
Case 2: If one string have character and other has * at that position. So, we can replace * with the same character in other string.
Case 3: If both the string has a character at that position, then they must be same, otherwise we can’t make them equal.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program for string matching with *
#include <bits/stdc++.h>
using namespace std;
  
bool doMatch(string A, string B)
{
    for (int i = 0; i < A.length(); i++) 
  
        // if the string don't have *
        // then character at that position
        // must be same.
        if (A[i] != '*' && B[i] != '*'
            if (A[i] != B[i])
               return false;
  
    return true;
}
  
int main()
{
    string A = "gee*sforgeeks";
    string B = "geeksforgeeks";
    cout << doMatch(A, B);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for string matching with * 
import java.util.*;
  
public class GfG {
      
    // Function to check if the two
    // strings can be matched or not
    public static int doMatch(String A, String B) { 
      
        for (int i = 0; i < A.length(); i++){
        
            // if the string don't have * 
            // then character at that position 
            // must be same. 
            if (A.charAt(i) != '*' && B.charAt(i) != '*'){  
                if (A.charAt(i) != B.charAt(i)) 
                   return 0;
            }
        }
    
        return 1
    
      
    // Driver code 
    public static void main(String []args){
          
        String A = "gee*sforgeeks"
        String B = "geeksforgeeks"
        System.out.println(doMatch(A, B));
    }
}
  
// This code is contributed by Rituraj Jain

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program for string 
# matching with *
  
def doMatch(A, B):
      
    for i in range(len(A)):
          
        # if the string don't have *
        # then character t that position
        # must be same.
        if A[i] != '*' and B[i] != '*':
            if A[i] != B[i]:
                return False
    return True
  
#Driver code
if __name__=='__main__':
    A = "gee*sforgeeks"
    B = "geeksforgeeks"
    print(int(doMatch(A, B)))
  
# this code is contributed by 
# Shashank_Sharma

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for string matching with
using System;
      
class GfG 
{
      
    // Function to check if the two
    // strings can be matched or not
    public static int doMatch(String A, String B)
    
      
        for (int i = 0; i < A.Length; i++)
        {
          
            // if the string don't have * 
            // then character at that position 
            // must be same. 
            if (A[i] != '*' && B[i] != '*'
                if (A[i] != B[i])
                    return 0;
        }
      
        return 1; 
    
      
    // Driver code 
    public static void Main(String []args)
    {
        String A = "gee*sforgeeks"
        String B = "geeksforgeeks"
        Console.WriteLine(doMatch(A, B));
    }
}
  
// This code contributed by Rajput-Ji

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program for string matching with * 
  
function doMatch($A, $B
    for ($i = 0; $i < strlen($A); $i++) 
  
        // if the string don't have * 
        // then character at that position 
        // must be same. 
        if ($A[$i] != '*' && $B[$i] != '*'
            if ($A[$i] != $B[$i]) 
            return false; 
  
    return true; 
}
  
// Driver Code
$A = "gee*sforgeeks"
$B = "geeksforgeeks"
echo doMatch($A, $B); 
  
// This code is contributed by Tushil.
?>

chevron_right


Output:

1


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.