Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,705 questions

55,464 answers

573 users

How to find the longest substring without repeating characters in Node.js

2 Answers

0 votes
/*
 * Finds the longest substring without repeating characters.
 * This version keeps a presence table and shrinks the window
 * by clearing characters until the duplicate is removed.
 *
 * Time complexity: O(n)
 */
function longestUniqueSubstringASCII(str) {
  const seen = Array(256).fill(false); // ASCII presence table

  let left = 0;
  let right = 0;
  let bestLeft = 0;
  let bestRight = 0;

  while (right < str.length) {
    const c = str.charCodeAt(right);

    if (seen[c]) {
      // Shrink window until we remove the duplicate
      while (str[left] !== str[right]) {
        seen[str.charCodeAt(left)] = false;
        left++;
      }
      left++; // skip the duplicate itself
    } else {
      seen[c] = true;

      if (right - left > bestRight - bestLeft) {
        bestLeft = left;
        bestRight = right;
      }
    }

    right++;
  }

  return str.slice(bestLeft, bestRight + 1);
}

const str2 = "xwwwqfwwxqwyq";
const result2 = longestUniqueSubstringASCII(str2);

console.log("Input:", str2);
console.log("Longest substring without repeating characters:", result2);



/*
run:

Input: xwwwqfwwxqwyq
Longest substring without repeating characters: xqwy

*/

 



answered Jul 18, 2023 by avibootz
edited 2 days ago by avibootz
0 votes
/*
 * Finds the longest substring without repeating characters.
 * Uses a sliding window and a table of last-seen indexes.
 *
 * - lastSeen[c] stores the most recent index of character c.
 * - left/right define the current window.
 * - When a duplicate appears inside the window, move left forward.
 *
 * Time complexity: O(n)
 */
function longestUniqueSubstring(str) {
  const lastSeen = Array(256).fill(-1); // ASCII table

  let left = 0;
  let bestStart = 0;
  let bestLength = 0;

  for (let right = 0; right < str.length; right++) {
    const c = str.charCodeAt(right);

    // If character was seen inside the current window, move left
    if (lastSeen[c] >= left) {
      left = lastSeen[c] + 1;
    }

    // Update last-seen index
    lastSeen[c] = right;

    // Check if this window is the best so far
    const windowLength = right - left + 1;
    if (windowLength > bestLength) {
      bestLength = windowLength;
      bestStart = left;
    }
  }

  return str.slice(bestStart, bestStart + bestLength);
}

const str = "xwwwqfwwxqwyq";
const result = longestUniqueSubstring(str);

console.log("Input:", str);
console.log("Longest substring without repeating characters:", result);



/*
run:

Input: xwwwqfwwxqwyq
Longest substring without repeating characters: xqwy

*/

 



answered 2 days ago by avibootz

Related questions

...