Python | Cuente el número de caracteres coincidentes en un par de strings

Dado un par de strings no vacías. Cuente el número de caracteres coincidentes en esas strings (considere el conteo único para el carácter que tiene duplicados en las strings).

Ejemplos:

Input : str1 = 'abcdef'
        str2 = 'defghia'
Output : 4 
(i.e. matching characters :- a, d, e, f)

Input : str1 = 'aabcddekll12@'
        str2 = 'bb22ll@55k'
Output : 5 
(i.e. matching characters :- b, 1, 2, @, k)

Enfoque 1:
1. Inicialice una variable de contador con 0.
2. Repita la primera string desde el carácter inicial hasta el carácter final.
3. Si el carácter extraído de la primera string se encuentra en la segunda string y también el índice de primera ocurrencia de ese carácter extraído en la primera string es el mismo que el índice del carácter extraído actual, entonces incremente el valor del contador en 1.

Nota: Para esto, use string.find(character) en python.

Esto devuelve el índice de la primera aparición del carácter en la string, si se encuentra; de lo contrario, devuelve -1.

Por ejemplo: str=’abcdedde’
str.find(‘d’) –> 3
str.find(‘e’) –> 4
str.find(‘g’) –> -1

4. Salida del valor del contador.

A continuación se muestra la implementación del enfoque anterior.

# Python code to count number of matching
# characters in a pair of strings
  
# count function
def count(str1, str2): 
    c, j = 0, 0
      
    # loop executes till length of str1 and 
    # stores value of str1 character by character 
    # and stores in i at each iteration.
    for i in str1:    
          
        # this will check if character extracted from
        # str1 is present in str2 or not(str2.find(i)
        # return -1 if not found otherwise return the 
        # starting occurrence index of that character
        # in str2) and j == str1.find(i) is used to 
        # avoid the counting of the duplicate characters
        # present in str1 found in str2
        if str2.find(i)>= 0 and j == str1.find(i): 
            c += 1
        j += 1
    print ('No. of matching characters are : ', c)
  
# Main function
def main(): 
    str1 ='aabcddekll12@' # first string
    str2 ='bb2211@55k' # second string
    count(str1, str2) # calling count function 
  
# Driver Code
if __name__=="__main__":
    main()

Producción :

No. of matching characters are : 5

Enfoque 2:
1. En este enfoque, set() se usa para eliminar duplicados en una string dada.
2.Después de que el concepto de conjunto (intersección) se use en una string dada.
3.Después de eso, encontramos una longitud usando el método len().

Python3

# Python code to count number of unique matching
# characters in a pair of strings
  
# count function count the common unique
# characters present in both strings .
def count(str1 ,str2) :
    # set of characters of string1
    set_string1 = set(str1)
  
    # set of characters of string2
    set_string2 = set(str2)
  
    # using (&) intersection mathematical operation on sets
    # the unique characters present in both the strings
    # are stored in matched_characters set variable
    matched_characters = set_string1 & set_string2
  
    # printing the length of matched_characters set
    # gives the no. of matched characters
    print("No. of matching characters are : " + str(len(matched_characters)) )
  
  
# Driver code
if __name__ == "__main__" :
  
    str1 = 'aabcddekll12@'  # first string
    str2 = 'bb2211@55k'     # second string
  
    # call count function 
    count( str1 , str2 )
     

Producción :

No. of matching characters are : 5

Enfoque 3:

Python3

# Count the Number of matching characters in 
# a pair of string
import re
ip1 = "geeks"
ip2 = "geeksonly"
  
c = 0
for i in ip1:
    if re.search(i,ip2):
        c=c+1
print("No. of matching characters are ", c)

Producción :

No. of matching characters are : 5

Publicación traducida automáticamente

Artículo escrito por AashutoshChauhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *