Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Python Tutorial
  • Interview Questions
  • Python Quiz
  • Python Glossary
  • Python Projects
  • Practice Python
  • Data Science With Python
  • Python Web Dev
  • DSA with Python
  • Python OOPs
Open In App
Next Article:
Python - Filter Similar Case Strings
Next article icon

Python - Similar characters Strings comparison

Last Updated : 12 Apr, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Given two Strings, separated by delim, check if both contain same characters.

Input : test_str1 = 'e!e!k!s!g', test_str2 = 'g!e!e!k!s', delim = '!'  Output : True  Explanation : Same characters, just diff. positions.   Input : test_str1 = 'e!e!k!s', test_str2 = 'g!e!e!k!s', delim = '!'  Output : False  Explanation : g missing in 1st String.

Method #1 : Using sorted() + split()

In this, we perform split using split(), and then perform the task of sorting to get strings in order, post that strings are compared using the comparison operator.

Python3
# Python3 code to demonstrate working of # Similar characters Strings comparison # Using split() + sorted()  # initializing strings test_str1 = 'e:e:k:s:g' test_str2 = 'g:e:e:k:s'  # printing original strings print("The original string 1 is : " + str(test_str1)) print("The original string 2 is : " + str(test_str2))  # initializing delim delim = ':'  # == operator is used for comparison res = sorted(test_str1.split(':')) == sorted(test_str2.split(':'))  # printing result print("Are strings similar : " + str(res)) 

Output
The original string 1 is : e:e:k:s:g The original string 2 is : g:e:e:k:s Are strings similar : True

Time Complexity: O(n) -> (split function)
Auxiliary Space: O(n)

Method #2 : Using set() + split()

In this, instead of sort(), we convert strings to set(), to get ordering. This works only on unique character strings.

Python3
# Python3 code to demonstrate working of # Similar characters Strings comparison # Using set() + split()  # initializing strings test_str1 = 'e:k:s:g' test_str2 = 'g:e:k:s'  # printing original strings print("The original string 1 is : " + str(test_str1)) print("The original string 2 is : " + str(test_str2))  # initializing delim delim = ':'  # == operator is used for comparison # removes duplicates and compares res = set(test_str1.split(':')) == set(test_str2.split(':'))  # printing result print("Are strings similar : " + str(res)) 

Output
The original string 1 is : e:k:s:g The original string 2 is : g:e:k:s Are strings similar : True

Time Complexity: O(n) -> (split function)
Auxiliary Space: O(n)

Method #3: Using dictionary

In this approach, we can use dictionaries to count the frequency of each character in both the strings. Then, we can compare the frequency of each character between the two dictionaries to check if the strings have the same characters or not.

Here are the steps:

  1. Initialize two dictionaries, one for each string.
  2. Split the strings into characters using the delimiter ':' and loop through the characters of each string.
  3. For each character, check if it is already present in the dictionary. If it is not present, add it with a value of 1. If it is already present, increment its value by 1.
  4. After both dictionaries are created, compare them by looping through each key in one dictionary and checking if the key exists in the other dictionary with the same value. If all keys and values match, return True. Otherwise, return False.
  5. Print the result.
Python3
# Python3 code to demonstrate working of # Similar characters Strings comparison # Using dictionary  # initializing strings test_str1 = 'e:k:s:g' test_str2 = 'g:e:k:s'  # printing original strings print("The original string 1 is : " + str(test_str1)) print("The original string 2 is : " + str(test_str2))  # initializing delim delim = ':'  # initializing dictionaries dict1 = {} dict2 = {}  # loop through characters in string 1 for char in test_str1.split(delim):     if char in dict1:         dict1[char] += 1     else:         dict1[char] = 1  # loop through characters in string 2 for char in test_str2.split(delim):     if char in dict2:         dict2[char] += 1     else:         dict2[char] = 1  # compare dictionaries res = True for key in dict1:     if key in dict2 and dict1[key] == dict2[key]:         continue     else:         res = False         break  # printing result print("Are strings similar : " + str(res)) 

Output
The original string 1 is : e:k:s:g The original string 2 is : g:e:k:s Are strings similar : True

Time complexity: O(n), where n is the length of the longer string (as we are looping through each character in each string once).
Auxiliary space: O(k), where k is the number of unique characters in both strings (as we are creating dictionaries to store the frequency of each character).

Method 4: using the Counter() function from the collections module. 

This approach involves the following steps:

  1. Import the collections module.
  2. Initialize the two strings to be compared.
  3. Initialize an empty dictionary for each string.
  4. Use the Counter() function to count the frequency of each character in both strings and store the results in the corresponding dictionary.
  5. Compare the two dictionaries to check if they have the same keys with the same frequency of values.
  6. Print the result.
Python3
# Importing the collections module from collections import Counter  # Initializing strings test_str1 = 'e:k:s:g' test_str2 = 'g:e:k:s'  # Printing original strings print("The original string 1 is : " + str(test_str1)) print("The original string 2 is : " + str(test_str2))  # Initializing empty dictionaries dict1 = {} dict2 = {}  # Counting the frequency of each character in both strings and storing the results in the corresponding dictionary dict1 = Counter(test_str1) dict2 = Counter(test_str2)  # Comparing the two dictionaries to check if they have the same keys with the same frequency of values res = dict1 == dict2  # Printing result print("Are strings similar : " + str(res)) 

Output
The original string 1 is : e:k:s:g The original string 2 is : g:e:k:s Are strings similar : True

Time complexity: The time complexity of this approach is O(n), where n is the length of the longest string. 
Auxiliary space: The auxiliary space required by this approach is O(k), where k is the number of unique characters in both strings. 

Method 5 : Using list comprehension and all()

 step-by-step approach of the code:

  1. Initialize two strings: test_str1 and test_str2.
  2. Initialize a delimiter as : in delim variable.
  3. Split test_str1 and test_str2 strings based on delimiter using the split() method and store the resulting lists in list1 and list2 respectively.
  4. Check if all characters in list1 are present in list2 using a list comprehension and the all() function.
  5. Similarly, check if all characters in list2 are present in list1.
  6. Store the result of the check in a variable called res.
  7. Print the result of the comparison by converting the boolean value of res to a string using str() function and concatenating it with the string "Are strings similar : ".
Python3
# initializing strings test_str1 = 'e:k:s:g' test_str2 = 'g:e:k:s'  # initializing delimiter delim = ':'  # convert strings to lists of characters list1 = test_str1.split(delim) list2 = test_str2.split(delim)  # check if both lists have the same characters res = all(char in list2 for char in list1) and all(char in list1 for char in list2)  # printing result print("Are strings similar : " + str(res)) 

Output
Are strings similar : True

Time complexity: O(n^2) where n is the length of the longer string (due to the all() function in the list comprehension)
Auxiliary space: O(n) where n is the length of the longer string (for the two lists created in memory)


Next Article
Python - Filter Similar Case Strings
author
manjeet_04
Improve
Article Tags :
  • Python
  • Python Programs
  • Python string-programs
Practice Tags :
  • python

Similar Reads

  • Python | Kth index character similar Strings
    Sometimes, we require to get the words that have the Kth index with the specific letter. This kind of use case is quiet common in places of common programming projects or competitive programming. Let’s discuss certain shorthand to deal with this problem in Python. Method #1: Using list comprehension
    3 min read
  • Python | Strings with similar front and rear character
    Sometimes, while programming, we can have a problem in which we need to check for the front and rear characters of each string. We may require to extract the count of all strings with similar front and rear characters. Let's discuss certain ways in which this task can be performed. Method #1: Using
    4 min read
  • Python - Filter Similar Case Strings
    Given the Strings list, the task is to write a Python program to filter all the strings which have a similar case, either upper or lower. Examples: Input : test_list = ["GFG", "Geeks", "best", "FOr", "all", "GEEKS"] Output : ['GFG', 'best', 'all', 'GEEKS'] Explanation : GFG is all uppercase, best is
    9 min read
  • Similarity Metrics of Strings - Python
    In Python, we often need to measure the similarity between two strings. For example, consider the strings "geeks" and "geeky" —we might want to know how closely they match, whether for tasks like comparing user inputs or finding duplicate entries. Let's explore different methods to compute string si
    3 min read
  • Python | Ways to check string contain all same characters
    Given a list of strings, write a Python program to check whether each string has all the characters same or not. Given below are a few methods to check the same. Method #1: Using Naive Method [Inefficient] C/C++ Code # Python code to demonstrate # to check whether string contains # all characters sa
    5 min read
  • Python - Remove Non-English characters Strings from List
    Given a List of Strings, perform removal of all Strings with non-english characters. Input : test_list = ['Good| ????', '??Geeks???'] Output : [] Explanation : Both contain non-English characters Input : test_list = ["Gfg", "Best"] Output : ["Gfg", "Best"] Explanation : Both are valid English words.
    8 min read
  • Python program to check a string for specific characters
    Here, will check a string for a specific character using different methods using Python. In the below given example a string 's' and char array 'arr', the task is to write a python program to check string s for characters in char array arr. Examples: Input: s = @geeksforgeeks% arr[] = {'o','e','%'}O
    4 min read
  • Check if string contains character - Python
    We are given a string and our task is to check if it contains a specific character, this can happen when validating input or searching for a pattern. For example, if we check whether 'e' is in the string 'hello', the output will be True. Using in Operatorin operator is the easiest way to check if a
    2 min read
  • Python - Group Similar Start and End character words
    Sometimes, while working with Python data, we can have problem in which we need to group all the words on basis of front and end characters. This kind of application is common in domains in which we work with data like web development. Lets discuss certain ways in which this task can be performed. M
    5 min read
  • Python - Equidistant consecutive characters Strings
    Given a Strings List, extract all the strings, whose consecutive characters are at the common difference in ASCII order. Input : test_list = ["abcd", "egil", "mpsv", "abd"] Output : ['abcd', 'mpsv'] Explanation : In mpsv, consecutive characters are at distance 3. Input : test_list = ["abcd", "egil",
    9 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences