# Check whether two strings contain same characters in same order

• Difficulty Level : Medium
• Last Updated : 27 Sep, 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 order bool 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 code int main() {     string s1 = "Geeks", s2 = "Geks";       if (solve(s1, s2))         cout << "Yes";     else         cout << "No";       return 0; }

## Java

 // Java implementation of the approach 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.valueOf(x);     return s; }   // Function that returns true if // the given Strings contain same // characters in same order static 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 code public 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 order def 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 code s1 = "Geeks" s2 = "Geks" if solve(s1, s2):     print("Yes") else:     print("No")   # This code is contributed by ankush_953

## C#

 // C# implementation of the approach using 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 order static 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 code public 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

## C++

 #include   using namespace std; bool checkSequence(string a, string b) {       // if length of the b = 0       // then we return true       if(b.size() == 0)         return true;           // if length of a = 0       // that means b is not present in       // a so we return false     if(a.size() == 0)         return false;       if(a[0] == b[0])         return checkSequence(a.substr(1), b.substr(1));     else         return checkSequence(a.substr(1), b); }   int main() {     string s1 = "Geeks", s2 = "Geks";       if (checkSequence(s1, s2))         cout << "Yes";     else         cout << "No"; }   // This code is contributed by SoumikMondal

## 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");     } }

## Python

 # Python3 implementation of approach def checkSequence(a,  b):       # if length of the b = 0     # then we return true     if len(b) == 0:         return True       # if length of a = 0     # that means b is not present in     # a so we return false     if len(a) == 0:         return False       if(a[0] == b[0]):         return checkSequence(a[1:], b[1:])     else:         return checkSequence(a[1:], b)     if __name__ == '__main__':     s1 = "Geeks"     s2 = "Geks"       if (checkSequence(s1, s2)):         print("Yes")     else:         print("No")     # This code is contributed by nirajgusain5

## C#

 // C# implementation of the approach using System;       public class temp { public static bool 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[0] == b[0])             return checkSequence(a.Substring(1), b.Substring(1));         else             return checkSequence(a.Substring(1), b);     }   // Driver code public static void Main(String[] args) {     String s1 = "Geeks", s2 = "Geks";       if (checkSequence(s1, s2))         Console.Write("Yes");     else         Console.Write("No"); } }   // This code is contributed by Dharanendra L V.

## Javascript



Output:

Yes

My Personal Notes arrow_drop_up
Recommended Articles
Page :