Related Articles
Check whether two strings contain same characters in same order
• Difficulty Level : Medium
• Last Updated : 14 Apr, 2021

Given two strings s1 and s2, the task is to find whether the two string contain the same characters that occur in the same order. For example: string “Geeks” and string “Geks” contain the same characters in same order.
Examples:

Input: s1 = “Geeks”, s2 = “Geks”
Output: Yes
Input: s1 = “Arnab”, s2 = “Andrew”
Output: No

Approach: We have two strings now we have to check whether the strings contain the same characters in the same order. So we will replace the contiguous similar element with a single element i.e. if we have “eee”, we will replace it with a single “e”. Now we will check that both the strings are equal or not. If equal then print Yes else No
Below is the implementation of the above approach:

## C++

 // C++ implementation of the approach#include using namespace std; string getString(char x){    // string class has a constructor    // that allows us to specify size of    // string as first parameter and character    // to be filled in given size as second    // parameter.    string s(1, x);     return s;} // Function that returns true if// the given strings contain same// characters in same orderbool solve(string s1, string s2){    // Get the first character of both strings    string a = getString(s1[0]), b = getString(s2[0]);     // Now if there are adjacent similar character    // remove that character from s1    for (int i = 1; i < s1.length(); i++)        if (s1[i] != s1[i - 1]) {            a += getString(s1[i]);        }     // Now if there are adjacent similar character    // remove that character from s2    for (int i = 1; i < s2.length(); i++)        if (s2[i] != s2[i - 1]) {            b += getString(s2[i]);        }     // If both the strings are equal    // then return true    if (a == b)        return true;     return false;} // Driver codeint main(){    string s1 = "Geeks", s2 = "Geks";     if (solve(s1, s2))        cout << "Yes";    else        cout << "No";     return 0;}

## Java

 // Java implementation of the approachclass temp{static String getString(char x){     // String class has a constructor    // that allows us to specify size of    // String as first parameter and character    // to be filled in given size as second    // parameter.    String s = String.valueOf(x);    return s;} // Function that returns true if// the given Strings contain same// characters in same orderstatic boolean solve(String s1, String s2){    // Get the first character of both Strings    String a = getString(s1.charAt(0)),           b = getString(s2.charAt(0));     // Now if there are adjacent similar character    // remove that character from s1    for (int i = 1; i < s1.length(); i++)        if (s1.charAt(i) != s1.charAt(i - 1))        {            a += getString(s1.charAt(i));        }     // Now if there are adjacent similar character    // remove that character from s2    for (int i = 1; i < s2.length(); i++)        if (s2.charAt(i) != s2.charAt(i - 1))        {            b += getString(s2.charAt(i));        }     // If both the Strings are equal    // then return true    if (a.equals(b))        return true;     return false;} // Driver codepublic static void main(String[] args){    String s1 = "Geeks", s2 = "Geks";     if (solve(s1, s2))        System.out.print("Yes");    else        System.out.print("No");}} // This code is contributed by ankush_953

## Python3

 # Python3 implementation of the approach def getString(x):     # string class has a constructor    # that allows us to specify the size of    # string as first parameter and character    # to be filled in given size as the second    # parameter.    return x # Function that returns true if# the given strings contain same# characters in same orderdef solve(s1, s2):     # Get the first character of both strings    a = getString(s1[0])    b = getString(s2[0])     # Now if there are adjacent similar character    # remove that character from s1    for i in range(1, len(s1)):        if s1[i] != s1[i - 1]:            a += getString(s1[i])             # Now if there are adjacent similar character    # remove that character from s2    for i in range(1, len(s2)):        if s2[i] != s2[i - 1]:            b += getString(s2[i])             # If both the strings are equal    # then return true    if a == b:        return True    return False # Driver codes1 = "Geeks"s2 = "Geks"if solve(s1, s2):    print("Yes")else:    print("No") # This code is contributed by ankush_953

## C#

 // C# implementation of the approachusing System;     public class temp{     static String getString(char x){     // String class has a constructor    // that allows us to specify size of    // String as first parameter and character    // to be filled in given size as second    // parameter.    String s = String.Join("",x);    return s;} // Function that returns true if// the given Strings contain same// characters in same orderstatic Boolean solve(String s1, String s2){    // Get the first character of both Strings    String a = getString(s1[0]),        b = getString(s2[0]);     // Now if there are adjacent similar character    // remove that character from s1    for (int i = 1; i < s1.Length; i++)        if (s1[i] != s1[i - 1]) {            a += getString(s1[i]);        }     // Now if there are adjacent similar character    // remove that character from s2    for (int i = 1; i < s2.Length; i++)        if (s2[i] != s2[i - 1]) {            b += getString(s2[i]);        }     // If both the strings are equal    // then return true    if (a == b)        return true;     return false;} // Driver codepublic static void Main(String[] args){    String s1 = "Geeks", s2 = "Geks";     if (solve(s1, s2))        Console.Write("Yes");    else        Console.Write("No");}} // This code is contributed by Princi Singh
Output:

Yes

Using Recursion

## Java

 /*package whatever //do not write package name here */ import java.io.*; class GFG {      public static boolean checkSequence(String a, String b) {          //if length of the b = 0          //then we return true          if(b.length()==0)            return true;                 //if length of a = 0          //that means b is not present in          //a so we return false        if(a.length()==0)            return false;                 if(a.charAt(0)==b.charAt(0))            return checkSequence(a.substring(1),b.substring(1));        else            return checkSequence(a.substring(1),b);    }    public static void main(String[] args)    {        String s1 = "Geeks", s2 = "Geks";           if (checkSequence(s1, s2))            System.out.print("Yes");        else            System.out.print("No");    }}

Output:

Yes

My Personal Notes arrow_drop_up