w3resource

Python: Find the longest common ending between two given strings

Python Basic - 1: Exercise-137 with Solution

Write a Python program to find the longest common ending between two given strings.

Sample Solution-1:

Python Code:

def test(str1, str2):
    for i in range(len(str2)):
        while str2[i:] in str1 and str2[-1]==str1[-1]:
            return str2[i:]
    return ""

str1 = "running";
str2 = "ruminating";
print("Original strings: " + str1 + "  " + str2);
print("Common ending between said two strings: " + test(str1, str2));
str1 = "thisisatest";
str2 = "testing123testing";
print("\nOriginal strings: " + str1 + "  " + str2);
print("Common ending between said two strings: " + test(str1, str2));

Sample Output:

Original strings: running  ruminating
Common ending between said two strings: ing

Original strings: thisisatest  testing123testing
Common ending between said two strings:

Flowchart:

Flowchart: Python - Find the longest common ending between two given strings.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:


Sample Solution-2:

Python Code:

def test(str1, str2):
    while not str1.endswith(str2):
        str2 = str2[1:]
    return str2
str1 = "running";
str2 = "ruminating";
print("Original strings: " + str1 + "  " + str2);
print("Common ending between said two strings: " + test(str1, str2));
str1 = "thisisatest";
str2 = "testing123testing";
print("\nOriginal strings: " + str1 + "  " + str2);
print("Common ending between said two strings: " + test(str1, str2));

Sample Output:

Original strings: running  ruminating
Common ending between said two strings: ing

Original strings: thisisatest  testing123testing
Common ending between said two strings:

Flowchart:

Flowchart: Python - Reverse all the words which have odd length.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:


Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to reverse all the words which have odd length.
Next: Write a Python program to reverse the binary representation of an given integer and convert the reversed binary number into an integer.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Python: Tips of the Day

How to make a flat list out of list of lists?

Given a list of lists l

flat_list = [item for sublist in l for item in sublist]

which means:

flat_list = []
for sublist in l:
    for item in sublist:
        flat_list.append(item)

is faster than the shortcuts posted so far. (l is the list to flatten.) Here is the corresponding function:

flatten = lambda l: [item for sublist in l for item in sublist]

As evidence, you can use the timeit module in the standard library:

$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'
10000 loops, best of 3: 143 usec per loop
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'
1000 loops, best of 3: 969 usec per loop
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'reduce(lambda x,y: x+y,l)'
1000 loops, best of 3: 1.1 msec per loop

Explanation: the shortcuts based on + (including the implied use in sum) are, of necessity, O(L**2) when there are L sublists -- as the intermediate result list keeps getting longer, at each step a new intermediate result list object gets allocated, and all the items in the previous intermediate result must be copied over (as well as a few new ones added at the end). So, for simplicity and without actual loss of generality, say you have L sublists of I items each: the first I items are copied back and forth L-1 times, the second I items L-2 times, and so on; total number of copies is I times the sum of x for x from 1 to L excluded, i.e., I * (L**2)/2.

The list comprehension just generates one list, once, and copies each item over (from its original place of residence to the result list) also exactly once.

Ref: https://bit.ly/3dKsNTR