Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Resolvendo o Desafio "Palindrome Number" do LeetCode com XBase e TLPP

_Créditos das imagens: ChatGPT_ ### LeetCode :: **Resolvendo o Desafio "Palindrome Number" do LeetCode com XBase e TLPP** No mundo da programação, os desafios do LeetCode são uma excelente maneira de aprimorar nossas habilidades de codificação. Um desses é o desafio [**Palindrome Number** (Número Palíndromo)](https://leetcode.com/problems/palindrome-number/description/). Neste artigo, vamos explorar como resolvemos esse desafio utilizando XBase e TLPP (linguagens que possuem um poderoso conjunto de ferramentas para o desenvolvimento de soluções rápidas e eficientes). #### Descrição do Desafio O problema **Palindrome Number** exige que verifiquemos se um número inteiro é um palíndromo. Ou seja, o número deve ser lido da mesma forma de trás para frente como é lido da frente para trás. Exemplos de números palíndromos incluem: 121, 12321, etc. Já números como 123, 10, e -121 não são palíndromos, pois sua leitura invertida não é igual ao número original. A ideia é criar uma f...

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