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++
// 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; } |
Java
// 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 |
Python3
# 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 |
C#
// 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 |
PHP
<?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. ?> |
Javascript
<script> // javascript program for string matching with * public class GfG { // Function to check if the two // strings can be matched or not function doMatch(A, B) { for (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 var A = "gee*sforgeeks" ; var B = "geeksforgeeks" ; document.write(doMatch(A, B)); // This code is contributed by aashish1995. </script> |
1