Postagem em destaque

BlackTDN :: Leetcode :: Resolvendo o Desafio "Longest Common Prefix" usando Harbour e TLPP

_Créditos das imagens: ChatGPT_

### Leetcode :: Resolvendo o Desafio "Longest Common Prefix" usando Harbour e TLPP

O problema [**"Longest Common Prefix"**](https://leetcode.com/problems/longest-common-prefix/description/), do Leetcode, consiste em encontrar o maior prefixo comum entre um array de strings. Se não houver prefixo comum, o resultado deve ser uma string vazia. Neste artigo, apresento as técnicas utilizadas para resolver o desafio nas linguagens **Harbour** e **TLPP**, com links para os códigos-fonte e uma explicação detalhada.

---

#### Descrição do Problema

Dado um array de strings, encontrar o maior prefixo comum entre todas as strings do array.

**Exemplo de Entrada e Saída:**

| Input                                               |-Output-|-Expected-|-Matched-|
|:----------------------------------------------------|:------:|:--------:|:-------:|
| `["flower","flow","flight"]`                        | `fl`   | `fl`     | `true`  |
| `["dog","racecar","car"]`                           |        |          | `true`  |
| `["marinaldo","maria","mar","marcela","margarida"]` | `mar`  | `mar`    | `true`  |
| `["davi","david"]`                                  | `davi` | `davi`   | `true`  |
| `["tio","tia","tido","time","tipo"]`                | `ti`   | `ti`     | `true`  |

---

#### Técnicas Utilizadas

A abordagem para resolver o problema foi desenvolvida de forma iterativa, comparando os caracteres das strings posição por posição até encontrar uma divergência. A lógica está implementada em duas versões: uma mais simples e direta e outra mais otimizada.

**1. Abordagem utilizando o Loop For/Next**  
A primeira versão (`longest_common_prefix.14.1`) começa assumindo que o prefixo comum é a primeira string do array. Em seguida, ela compara os caracteres do prefixo com cada string subsequente, reduzindo o prefixo conforme necessário.

**2. Abordagem utilizando aEval**  
Na segunda versão (`longest_common_prefix.14.2`), a interação é feita através da função aEval.

---

#### Implementação em Harbour e TLPP

Os códigos para as implementações estão disponíveis no GitHub e podem ser acessados nos seguintes links:

**Códigos para Harbour:**

- [longest_common_prefix.14.1.prg](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/014/longest_common_prefix.14.1.prg)  
- [longest_common_prefix.14.2.prg](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/014/longest_common_prefix.14.2.prg)  

**Códigos para TLPP:**

- [longest_common_prefix.14.1.tlpp](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/014/longest_common_prefix.14.1.tlpp)  
- [longest_common_prefix.14.2.tlpp](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/014/longest_common_prefix.14.2.tlpp)

---

#### Como Funciona a Solução

1. **Inicialização do Prefixo:**  
   O prefixo inicial é definido como a primeira string do array.

2. **Comparação Iterativa:**  
   Cada string subsequente é comparada com o prefixo. A comparação ocorre caractere por caractere, e o prefixo é ajustado conforme necessário.

3. **Encerramento Antecipado:**  
   Se o prefixo se torna vazio em qualquer momento, o algoritmo encerra imediatamente, pois não há prefixo comum.

4. **Complexidade:**  
   - **Tempo:** \(O(S)\), onde \(S\) é a soma dos caracteres de todas as strings.  
   - **Espaço:** \(O(1)\), já que o prefixo é modificado in-place.

---

#### Exemplos de Saída

Os testes fornecidos mostram que a solução corresponde ao resultado esperado para todos os casos, como ilustrado na tabela de entrada e saída acima.

---

#### Conclusão

Essa implementação do problema "Longest Common Prefix" em Harbour e TLPP demonstra a eficiência das linguagens para lidar com desafios de algoritmos. Harbour, com sua simplicidade, e TLPP, com recursos adicionais, oferecem alternativas práticas para desenvolvedores.

Explore os códigos nos links fornecidos e experimente resolvê-los você mesmo!

---

#### Hashtags

#Harbour, #TLPP, #LeetCode, #Programming, #Algorithms, #LongestCommonPrefix, #OpenSource, #XBase, #CodingChallenges, #TechBlog

Comentários

Postagens mais visitadas