# @uwuapps/algorithms

High-performance algorithms for text processing and data structures.

## Installation

```bash
npm install @uwuapps/algorithms
```

## Features

### Distance Algorithms

- **Levenshtein Distance**: Classic edit distance algorithm
- **Optimized Levenshtein**: Space-optimized O(min(n,m)) implementation
- **Damerau-Levenshtein**: Includes transpositions for better typo detection

### Phonetic Algorithms

- **Soundex**: Classic phonetic encoding
- **Metaphone**: Improved English pronunciation rules
- **Double Metaphone**: Handles multiple pronunciations

### Data Structures

- **Trie**: Efficient prefix tree with frequency tracking

## Usage

### Distance Algorithms

```typescript
import { LevenshteinDistance, DamerauLevenshtein } from '@uwuapps/algorithms/distance';

const levenshtein = new LevenshteinDistance();
const distance = levenshtein.calculate('hello', 'hallo'); // 1
const similarity = levenshtein.similarity('hello', 'hallo'); // 0.8

const damerau = new DamerauLevenshtein();
const typoDistance = damerau.calculate('teh', 'the'); // 1 (transposition)
```

### Phonetic Algorithms

```typescript
import { Soundex, Metaphone } from '@uwuapps/algorithms/phonetic';

const soundex = new Soundex();
const code = soundex.encode('Smith'); // S530
const soundsLike = soundex.soundsLike('Smith', 'Smythe'); // true

const metaphone = new Metaphone();
const phoneticCode = metaphone.encode('phone'); // FN
```

### Data Structures

```typescript
import { Trie } from '@uwuapps/algorithms/data-structures';

const trie = new Trie();
trie.insert('hello', 10);
trie.insert('help', 5);

const suggestions = trie.getSuggestions('hel'); // ['hello', 'help']
const exists = trie.search('hello'); // true
```

## Performance

All algorithms are optimized for performance:
- Caching for repeated calculations
- Early termination with max distance
- Space-optimized implementations
- Efficient data structures

## License

MIT