SShortSingh.
Back to feed

How to Build a Trie Data Structure for Fast Autocomplete in Python

0
·24 views

A developer building a side project encountered severe performance issues when implementing autocomplete using a naive loop that scanned an entire 100,000-word dictionary on every keystroke. The solution was a Trie, a tree-based data structure where each node represents a single character and shared prefixes reuse the same nodes, eliminating redundant scanning. Inserting words costs O(L) time across total characters, while prefix lookups require only O(p) steps for a prefix of length p. The article walks through a Python implementation covering node definition, word insertion, depth-first search collection, and a starts_with method that exits early when no matching prefix exists. Common pitfalls highlighted include forgetting to flag word-ending nodes and incorrectly mutating shared prefix strings during recursive traversal.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

Tracking form submits and click-to-call taps to the original traffic source

Pageview analytics show that visitors arrived but not which ad, keyword, or search produced a lead, because the conversion happens in an inbox or phone log. The article argues that the fix is to store the first-touch source on a visitor's initial landing and attach it when a contact form is submitted or a tel: link is tapped. It describes four useful signals: UTM parameters, the document referrer, and the gclid and fbclid click IDs from Google and Meta ads. A simplified JavaScript example shows how to save this data locally and add it as hidden form fields or send it with a beacon. The author cautions that the sketch needs a server, consent handling, and a way to detect AI-assistant referrals, and should not be treated as a complete identity system.

0
ProgrammingDEV Community ·

Sitemap Audits Reveal Hreflang and Canonical Errors Across Five-Language Site

A developer describes auditing an 80-URL sitemap spanning five languages and finding that correct-looking configuration can still be broken. Each page needs six hreflang tags, including x-default, and every referenced URL must return a 200 status with a consistent canonical. A single stale alternate URL can cause the entire hreflang cluster to be ignored by crawlers. The author recommends generating canonical and hreflang tags from one per-page translation map and checking that breadcrumb structured data matches the visible trail. They also advise fetching deployed pages to confirm tag counts, since partial uploads can silently fail.

0
ProgrammingDEV Community ·

Developer builds Android Reddit reader using public RSS feeds, avoiding API keys

A developer wanted to read public Reddit threads without creating an account or registering for the official API, which requires OAuth and token refresh. They built a small Android client, about 105 KB with no server or analytics, that relies on Reddit's public RSS endpoints instead. The feeds return Atom XML and cap results at 25 listing posts and 100 thread entries, and Reddit rate-limits them per IP, returning HTTP 429 errors that should trigger a retry. The article also covers the feed's entry structure, which lacks comment scores or parent pointers, and shows how Android's built-in streaming XML parser can process the feed.

0
ProgrammingDEV Community ·

Browser-Based WebP to PNG Conversion Using HTML5 Canvas and JavaScript

A DEV Community article describes how WebP images can be converted to PNG entirely on the client side, without server-side tools like ImageMagick or Sharp. The approach relies on modern web APIs: FileReader reads the file in memory, while HTMLImageElement or createImageBitmap decodes the WebP data. The decoded image is then drawn onto a canvas and re-encoded as PNG using toDataURL() or toBlob(). The piece also mentions a free browser-based converter that performs these transformations privately on the user's device.