UNPKG

cumulocity-cypress

Version:
45 lines (44 loc) 1.2 kB
class TrieNode { constructor() { this.children = new Map(); this.isEndOfWord = false; this.count = 0; } } function insertWord(root, word) { let currentNode = root; for (let i = 0; i < word.length; i++) { const char = word[i]; if (!currentNode?.children.has(char)) { currentNode?.children.set(char, new TrieNode()); } currentNode = currentNode?.children.get(char); if (currentNode) { currentNode.count++; } } if (currentNode) { currentNode.isEndOfWord = true; } } export function shortestUniquePrefixes(words) { const root = new TrieNode(); const prefixes = []; for (const word of words) { insertWord(root, word); } for (const word of words) { let currentNode = root; let prefix = ""; for (let i = 0; i < word.length; i++) { const char = word[i]; prefix += char; currentNode = currentNode?.children.get(char); if (currentNode && currentNode.count === 1) { prefixes.push(prefix); break; } } } return prefixes; }