- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Program to count substrings that differ by one character in Python

Suppose we have two strings s and t, we have to find the number of ways we can select a nonempty substring of s and replace one single character by another different character such that the resulting substring is one of the substring of t. We have to find the number of substrings that satisfy the condition above.

So, if the input is like s = "sts" t = "tsts", then the output will be 6 because the following are the pairs of substrings from s and t that differ by 1 character −

- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts")

The bold character portions are the substrings that are chosen from two strings s and t.

To solve this, we will follow these steps −

- n1 := size of s
- n2 := size of t
- ans := 0
- for each index i1 and character c1 from s, do
- for each index i2, and character c2 from t, do
- i := i1, j := i2
- while i < n1 and j < n2 and s[i] is same as t[j], do
- i := i + 1, j := j + 1

- if i < n1 and j < n2 and s[i] is not same as t[j], then
- := i + 1, j := j + 1
- ans := ans + 1
- while i < n1 and j < n2 and s[i] is same as t[j], do
- i := i + 1, j := j + 1
- ans := ans + 1

- for each index i2, and character c2 from t, do
- return ans

## Example

Let us see the following implementation to get better understanding −

def solve(s, t): n1 = len(s) n2 = len(t) ans = 0 for i1, c1 in enumerate(s): for i2, c2 in enumerate(t): i = i1 j = i2 while i < n1 and j < n2 and s[i] == t[j]: i += 1 j += 1 if i < n1 and j < n2 and s[i] != t[j]: i += 1 j += 1 ans += 1 while i < n1 and j < n2 and s[i] == t[j]: i += 1 j += 1 ans += 1 return ans s = "sts" t = "tsts" print(solve(s, t))

## Input

"sts", "tsts"

## Output

6

- Related Questions & Answers
- Count substrings that starts with character X and ends with character Y in C++
- Program to find island count by adding blocks into grid one by one in Python
- Program to count number of palindromic substrings in Python
- Program to count number of homogenous substrings in Python
- Program to find out if the strings supplied differ by a character in the same position in Python
- Program to count maximum score from removing substrings in Python
- Program to find the indexes where the substrings of a string match with another string fully or differ at one position in python
- Divide a big number into two parts that differ by k in C++ Program
- Program to count number of distinct substrings in s in Python
- Remove Substrings in One Iteration in python
- Program to count substrings with all 1s in binary string in Python
- Program to count number of similar substrings for each query in Python
- Count substrings with each character occurring at most k times in C++
- Find substrings that contain all vowels in Python
- Python program to Sort Strings by Punctuation count

Advertisements