Open In App

Python | Count the Number of matching characters in a pair of string

Last Updated : 31 Dec, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Share
Report
News Follow

The problem is about finding how many characters are the same in two strings. We compare the strings and count the common characters between them. In this article, we’ll look at different ways to solve this problem.

Using Set

Sets are collections of unique items, so by converting both strings into sets, we can easily find the common characters between them. This method is efficient because sets quickly identify matches.

Example:

s1 = "VISHAKSHI"
s2 = "VANSHIKA"

# find common characters
res= len(set(s1.lower()).intersection(set(s2.lower())))
print(res)

Output
6

Explanation:

  • s1.lower() and s2.lower() converts both strings to lowercase to ensure case-insensitivity.
  • set(s1.lower()) and set(s2.lower()) converts the strings to sets, removing duplicate characters.
  • intersection() finds common characters between the two sets.
  • len() counts the number of common characters.

Using Counter

Counter that helps to count how many times each item appears in a list or string. It’s useful for tasks like finding out how many characters are shared between two strings.

Example:

from collections import Counter

s1 = "VISHAKSHI"
s2 = "VANSHIKA"

# Count characters
c1 = Counter(s1.lower())
c2= Counter(s2.lower())

# Find common characters and sum their counts
res = sum((c1 & c2).values())
print(res)

Output
6

Explanation:

  • Counter(s1.lower()) and Counter(s2.lower()) counts the frequency of each character in both strings.
  • c1 & c2 finds the common characters between the two strings, keeping the minimum frequency.
  • sum((c1 & c2).values()) sums the frequencies of the common characters.

Using List Comprehension

This method checks which characters are found in both strings by turning them into sets. It then counts how many characters are the same in both strings.

s1 = "VISHAKSHI"
s2 = "VANSHIKA"

# Find common characters
res= len([char for char in set(s1.lower())
          if char in set(s2.lower())])
print(res)

Output
6

Explanation:

  • set(string1.lower()) and set(string2.lower()) converts both strings to lowercase and then into sets to remove duplicates and ensure case-insensitive comparison.
  • list comprehension find characters that appear in both sets.
  • len() counts the number of common characters.


Next Article

Similar Reads

three90RightbarBannerImg