Open In App
Related Articles

Python | Check order of character in string using OrderedDict( )

Improve Article
Save Article
Like Article

Given an input string and a pattern, check if characters in the input string follows the same order as determined by characters present in the pattern. Assume there won’t be any duplicate characters in the pattern. Examples:

string = "engineers rock"
pattern = "er";
Output: true
All 'e' in the input string are before all 'r'.

string = "engineers rock"
pattern = "gsr";
Output: false
There are one 'r' before 's' in the input string.

We have existing solution for this problem, please refer Check if string follows order of characters defined by a pattern or not | Set 1. Here we solve this problem quickly in python using OrderedDict(). Approach is very simple,

  • Create an OrderedDict of input string which contains characters of input strings as Key only.
  • Now set a pointer at the start of pattern string.
  • Now traverse generated OrderedDict and match keys with individual character of pattern string, if key and character matches with each other then increment pointer by 1.
  • If pointer of pattern reaches it’s end that means string follows order of characters defined by a pattern otherwise not.


# Function to check if string follows order of
# characters defined by a pattern
from collections import OrderedDict
def checkOrder(input, pattern):
    # create empty OrderedDict
    # output will be like {'a': None,'b': None, 'c': None}
    dict = OrderedDict.fromkeys(input)
    # traverse generated OrderedDict parallel with
    # pattern string to check if order of characters
    # are same or not
    ptrlen = 0
    for key,value in dict.items():
        if (key == pattern[ptrlen]):
            ptrlen = ptrlen + 1
        # check if we have traverse complete
        # pattern string
        if (ptrlen == (len(pattern))):
            return 'true'
    # if we come out from for loop that means
    # order was mismatched
    return 'false'
# Driver program
if __name__ == "__main__":
    input = 'engineers rock'
    pattern = 'er'
    print (checkOrder(input,pattern))



Check order of character in string Using two pointers

This Approach checks if the characters in the given pattern appear in the same order in the given string. It uses two pointers to keep track of the positions of the characters being compared. If all the characters in the pattern are found in the same order in the string, the function returns True, otherwise False.


1. Initialize two pointers, one for the string and one for the pattern, both starting at 0.
2. Traverse through the string character by character.
3. If the current character in the string matches the current character in the pattern, increment the pattern pointer.
4. Increment the string pointer after processing each character.
5. If the pattern pointer is equal to the length of the pattern, return True.
6. If the end of the string is reached and the pattern pointer is less than the length of the pattern, return False.


def check_order(string, pattern):
    i, j = 0, 0
    for char in string:
        if char == pattern[j]:
            j += 1
        if j == len(pattern):
            return True
        i += 1
    return False
string = 'engineers rock'
pattern = 'er'
print(check_order(string, pattern))



Time Complexity: O(n), where n is length of string
Space Complexity: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 27 Jul, 2023
Like Article
Save Article
Similar Reads
Complete Tutorials