Related Articles

Related Articles

Check whether two strings contain same characters in same order
  • Difficulty Level : Medium
  • Last Updated : 01 Aug, 2019

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <iostream>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Output:

Yes

competitive-programming-img




My Personal Notes arrow_drop_up
Recommended Articles
Page :