Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode 23: Mesclando K Listas Ordenadas com Harbour/xBase e Reutilização de Código

_Créditos das imagens: ChatGPT **Título:** LeetCode 23: Mesclando K Listas Ordenadas com Harbour/xBase e Reutilização de Código **Introdução** Olá, entusiastas de Harbour/xBase e desafios de programação! Depois de explorarmos como mesclar duas listas ordenadas no [nosso post sobre o LeetCode 21](https://www.blacktdn.com.br/2025/03/blacktdn-leetcode-21-merge-two-sorted.html), vamos dar um passo adiante e enfrentar um problema um pouco mais complexo: o LeetCode 23 - Merge K Sorted Lists. Neste artigo, vamos desvendar uma implementação em Harbour/xBase para este desafio, demonstrando como podemos inteligentemente reutilizar a solução que já construímos para o problema 21. Veremos como a modularidade e a construção sobre soluções anteriores podem simplificar problemas mais complexos. **O Problema: LeetCode 23 - Merge K Sorted Lists** O desafio é o seguinte: dado um array (`aLists` em nossa implementação) contendo `k` listas encadeadas, onde cada lista já está ordenada em ordem cres...

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_

### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas.

#### Implementações em Harbour

##### Versão 5.1
Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado.

##### Versão 5.2
Baseada no algoritmo de Manacher, essa versão é otimizada para operar em tempo linear. Ela utiliza estruturas auxiliares para calcular de forma eficiente o tamanho das substrings palindrômicas ao redor de cada caractere.

#### Implementações em TLPP/AdvPL

##### Versão 5.1
Assim como a implementação em Harbour, a solução TLPP utiliza a técnica de expansão central. Porém, devido às diferenças intrínsecas na linguagem, o código emprega funções específicas para algumas operações.

##### Versão 5.2
A implementação TLPP do algoritmo de Manacher também foca na eficiência. A adaptação para TLPP preserva a lógica original enquanto respeita as particularidades da sintaxe.

#### Comparando Harbour e TLPP

##### Semelhanças
1. **Lógica:** Ambas as linguagens empregam a mesma lógica de resolução. As técnicas de expansão e o algoritmo de Manacher são implementados de forma similar.
2. **Resultados:** As duas soluções retornam tanto o maior palíndromo quanto todas as substrings palindrômicas, proporcionando uma análise mais completa.

##### Diferenças
1. **Definição de Tipo:** As definições de tipo e escopo tem diferenças sutis em ambas as linguagens.
2. **Desempenho:** Apesar das similaridades na lógica, o desempenho pode variar dependendo do ambiente de execução, sendo Harbour mais eficiente em alguns cenários devido ao suporte às bibliotecas otimizadas.
3. **Funções:** Ambas possuem funções específicas para determinadas operações.
4. **Encoding:** O Harbour utiliza UTF-8 para maior compatibilidade com sistemas modernos, enquanto o TLPP opta pelo encoding CP1252 para manter compatibilidade com sistemas legados. Essa diferença é especialmente notável ao manipular strings com acentuação.

#### Links para o Código-Fonte
- [Harbour Versão 5.1](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/005/longest_palindromic_substring.5.1.prg)
- [Harbour Versão 5.2](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/005/longest_palindromic_substring.5.2.prg)
- [TLPP Versão 5.1](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/005/longest_palindromic_substring.5.1.tlpp)
- [TLPP Versão 5.2](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/005/longest_palindromic_substring.5.2.tlpp)

#### Conclusão
As implementações em Harbour e TLPP apresentam soluções eficazes para o problema do Longest Palindromic Substring, cada uma com suas particularidades. Escolher entre as duas linguagens depende do contexto e dos requisitos do projeto, mas ambas demonstram a versatilidade e o poder de adaptação de algoritmos clássicos em diferentes plataformas.

#### Hashtags
#PalindromeChallenge #AdvPL #TLPP #HarbourLanguage #AlgorithmComparison #DynamicProgramming #CodeEfficiency #ProgrammingLanguages #TechBlogging #SoftwareDevelopment

Comentários

Postagens mais visitadas