Número máximo de divisiones de un número binario

Dada una string binaria S , la tarea es encontrar el número máximo de partes en las que puede dividirla de modo que cada parte sea divisible por 2 . Si la string no se puede dividir cumpliendo las condiciones dadas, imprima -1 . Ejemplos:   Entrada: S = “100”  Salida: 2  Las divisiones son las … Continue reading «Número máximo de divisiones de un número binario»

Recuento de caracteres lexicográficamente más pequeños a la derecha

Dada una string que consta solo de alfabetos ingleses en minúsculas. La tarea es contar el número total de caracteres alfabéticamente más pequeños en el lado derecho de los caracteres en cada índice. Ejemplos:  Entrada: str = “edcba”  Salida: 4 3 2 1 0  Explicación:  El número de caracteres en el lado derecho del índice … Continue reading «Recuento de caracteres lexicográficamente más pequeños a la derecha»

Semiprimos libres de cuadrados en un rango dado usando C++ STL

Dados dos enteros L y R (L < = R). La tarea es encontrar todos los semiprimos libres de cuadrados en el rango L a R (ambos inclusive). Ejemplos: Entrada: L = 1, R = 10 Salida: 2 4, 6, 9, 10 son semiprimos. Pero 6, 10 son semiprimos sin cuadrados. Entrada: L = 10, … Continue reading «Semiprimos libres de cuadrados en un rango dado usando C++ STL»

Cambio de representación en la técnica Transfer and Conquer

El cambio de representación es una de las variantes de la técnica Transfer and Conquer donde el problema dado se transforma en otro dominio que es más familiar o más simple de ejecutar. En el caso de cambio de representación, la instancia de un problema dado se transforma en otra representación sin afectar la instancia … Continue reading «Cambio de representación en la técnica Transfer and Conquer»

Algoritmo de Day-Stout-Warren para equilibrar el árbol de búsqueda binaria dado

 Dado un árbol de búsqueda binario (BST) desequilibrado, la tarea es convertirlo en un BST equilibrado en tiempo lineal y sin usar espacio auxiliar. Ejemplos: Entrada:               5                        / \                 … Continue reading «Algoritmo de Day-Stout-Warren para equilibrar el árbol de búsqueda binaria dado»

Algoritmo de Karatsuba para la multiplicación rápida de números decimales grandes representados como strings

Dadas dos strings numéricas A y B , la tarea es encontrar el producto de las dos strings numéricas de manera eficiente. Ejemplo: Entrada: A = 5678, B = 1234 Salida: 7006652 Entrada: A =74638463789, B = 35284567382 Salida: 2633585904851937530398 Enfoque: el problema dado se puede resolver usando el algoritmo de multiplicación rápida de Karastuba … Continue reading «Algoritmo de Karatsuba para la multiplicación rápida de números decimales grandes representados como strings»

Implementación del algoritmo Rabin Karp usando Rolling Hash en Java

Hay tantos algoritmos de búsqueda de patrones para la string. El algoritmo KMP, el algoritmo Z, el algoritmo Rabin Karp, etc., estos algoritmos son la optimización del algoritmo de búsqueda de patrones ingenuos. Algoritmo de búsqueda de patrones ingenuos: Input : «AABACACAACAC» Pattern : «CAC» Output : [4,9] AABACACAACAC Implementación: Java // Java Program to … Continue reading «Implementación del algoritmo Rabin Karp usando Rolling Hash en Java»

Similitud de Jaro y Jaro-Winkler

Similitud Jaro Jaro Similarity es la medida de similitud entre dos strings. El valor de la distancia de Jaro varía de 0 a 1, donde 1 significa que las strings son iguales y 0 significa que no hay similitud entre las dos strings.   Ejemplos:  Entrada: s1 = “CAJA”, s2 = “TRAZA”; Salida: Similitud Jaro = 0.733333 … Continue reading «Similitud de Jaro y Jaro-Winkler»

Análisis de Algoritmo | Conjunto 5 (Introducción al análisis amortizado)

El análisis amortizado se utiliza para algoritmos en los que una operación ocasional es muy lenta, pero la mayoría de las demás operaciones son más rápidas. En Análisis amortizado, analizamos una secuencia de operaciones y garantizamos un tiempo promedio en el peor de los casos que es menor que el tiempo en el peor de … Continue reading «Análisis de Algoritmo | Conjunto 5 (Introducción al análisis amortizado)»

Suma de números de Fibonacci en un rango

Dado un rango [l, r] , la tarea es encontrar la suma fib(l) + fib(l + 1) + fib(l + 2) + ….. + fib(r) donde fib(n) es el n -ésimo número de Fibonacci. Ejemplos:  Entrada: l = 2, r = 5  Salida: 11  fib(2) + fib(3) + fib(4) + fib(5) = 1 + 2 … Continue reading «Suma de números de Fibonacci en un rango»