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 order``bool` `solve(string s1, string s2)``{``    ``// Get the first character of both strings``    ``string a = getString(s1), b = getString(s2);` `    ``// 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),``        ``b = getString(s2);` `    ``// 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

## 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