es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recuento de duplicados de cadena.

Estoy intentando imprimir las cuentas de duplicados de una cadena de entrada mediante el uso de un mapa hash. No estoy seguro de por qué la solución no funciona. Vengo de un fondo de Python.
//Escriba un programa eficiente para imprimir todos los duplicados y sus cuentas en la cadena de entrada.

func letras(inputs: String)->[Character:Int] {
    var result = [Character:Int]()
    for input in inputs {
        if let value = result[input] {
            return [input : value]
        }
        else {
            result[input] = (result[input] ?? 0)+1
        }
    }
    return [:]
}
letters(inputs:"geeksforgeeks")
["e": 1]
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas con la solución proporcionada:

    1. La función solo devuelve un diccionario con el recuento del primer duplicado que se encuentra. Necesita realizar un seguimiento de todos los duplicados y sus recuentos.
    2. La condición if let value = result[input] es incorrecta. Debería verificar si la clave (es decir, input) ya existe en el diccionario, no solo su valor.

    Aquí hay una versión corregida de la función:

    `swift
    func countDuplicates (en entrada: String) -> [Character: Int] {
    var resultado = [Character: Int] ()
    para char en la entrada {
    si deja contar = resultado [char] {
    resultado [char] = contar + 1 // incrementar el recuento si el carácter ya existe en el diccionario
    } más {
    resultado [char] = 1 // agregar carácter al diccionario con recuento 1 si aún no existe
    }
    }
    resultado de retorno .filter { $ 0.value> 1 } // filtrar caracteres con recuento de 1 o menos
    }
    `

    Uso de ejemplo:

    `swift
    let cuentas = countDuplicates (en: "geeksforgeeks")
    print (cuentas) // ["g": 2, "e": 4, "k": 2, "s": 2]
    `

    Esto imprimirá un diccionario con los recuentos de todos los duplicados encontrados en la cadena de entrada.

Comments are closed.