If it were just checking whether letters in a test_string are also in a control_string,
I would not have had this problem.
I will simply use the code below.
if set(test_string.lower()) <= set(control_string.lower()): return True
But I also face a rather convoluted task of discerning whether the overlapping letters in the
control_string are in the same sequential order as those in test_string.
test_string = 'Dih' control_string = 'Danish' True test_string = 'Tbl' control_string = 'Bottle' False
I thought of using the for iterator to compare the indices of the alphabets, but it is quite hard to think of the appropriate algorithm.
for i in test_string.lower(): for j in control_string.lower(): if i==j: index_factor = control_string.index(j)
My plan is to compare the primary index factor to the next factor, and if primary index factor turns out to be larger than the other, the function returns False.
I am stuck on how to compare those index_factors in a for loop.
How should I approach this problem?
You can use
find(letter, last_index) to find occurence of desired letter after processed letters.
def same_order_in(test, control): index = 0 control = control.lower() for i in test.lower(): index = control.find(i, index) if index == -1: return False # index += 1 # uncomment to check multiple occurrences of same letter in test string return True
If test string have duplicate letters like:
test_string = 'Diih' control_string = 'Danish'
With commented line
same_order_in(test_string, control_string) == True
and with uncommented line
same_order_in(test_string, control_string) == False