Find common characters between two strings

大兔子大兔子 提交于 2020-01-05 08:58:08

问题


I am trying to print the common letters from two different user inputs using a for loop. (I need to do it using a for loop.) I am running into two problems: 1. My statement "If char not in output..." is not pulling unique values. 2. The output is giving me a list of individual letters rather than a single string. I tried the split the output but split ran into a type error.

wrd = 'one'
sec_wrd = 'toe'

def unique_letters(x): 
    output =[]
    for char in x: 
        if char not in output and char != " ": 
            output.append(char)
    return output

final_output = (unique_letters(wrd) + unique_letters(sec_wrd))

print(sorted(final_output))

回答1:


You are trying to perform the Set Intersection. Python has set.intersection method for the same. You can use it for your use-case as:

>>> word_1 = 'one'
>>> word_2 = 'toe'

#    v join the intersection of `set`s to get back the string
#    v                             v  No need to type-cast it to `set`.
#    v                             v  Python takes care of it
>>> ''.join(set(word_1).intersection(word_2))
'oe'

set will return the unique characters in your string. set.intersection method will return the characters which are common in both the sets.


If for loop is must for you, then you may use a list comprehension as:

>>> unique_1 = [w for w in set(word_1) if w in word_2]
# OR
# >>> unique_2 = [w for w in set(word_2) if w in word_1]

>>> ''.join(unique_1)  # Or, ''.join(unique_2)
'oe'

Above result could also be achieved with explicit for loop as:

my_str = ''
for w in set(word_1):
    if w in word_2:
        my_str += w

# where `my_str` will hold `'oe'`



回答2:


For this kind of problem, you're probably better off using sets:

wrd = 'one'
sec_wrd = 'toe'
wrd = set(wrd)
sec_wrd = set(sec_wrd)

print(''.join(sorted(wrd.intersection(sec_wrd))))



回答3:


Function to solve the problem

def find_common_characters(msg1,msg2):
    #to remove duplication set() is used.
    set1=set(msg1)
    set2=set(msg2)
    remove={" "}
    #if you wish to exclude space
    set3=(set1&set2)-remove
    msg=''.join(set3)
    return msg

Providing input and Calling the function Provide different values for msg1,msg2 and test your program

msg1="python"
msg2="Python"
common_characters=find_common_characters(msg1,msg2)
print(common_characters)


来源:https://stackoverflow.com/questions/48611525/find-common-characters-between-two-strings

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!