Rumah > hujung hadapan web > tutorial js > Substring Terpanjang Tanpa Mengulang Aksara dengan Teknik Tetingkap Gelongsor

Substring Terpanjang Tanpa Mengulang Aksara dengan Teknik Tetingkap Gelongsor

Patricia Arquette
Lepaskan: 2024-12-10 11:14:16
asal
929 orang telah melayarinya

Mari kita pecahkan langkah penyelesaian dan lihat cara setiap langkah berfungsi

Kami menganggap kami menerima input berikut:
Longest Substring Without Repeating Characters with Sliding Window Technique

Kami akan mencipta set kosong untuk menyimpan huruf yang kami temui dan pembolehubah untuk mengekalkan subrentetan terpanjang yang kami temui.
Longest Substring Without Repeating Characters with Sliding Window Technique

Sekarang, kami akan menyemak sama ada nilai yang ditunjukkan oleh kanan wujud dalam set. Jika ia tidak wujud, kami akan menambahnya pada set dan bergerak ke kanan satu langkah ke hadapan. Selepas itu, kami akan mengemas kini subrentetan terpanjang dengan membandingkan saiz set dengan nilai yang disimpan dalam pembolehubah longSubstr.
Longest Substring Without Repeating Characters with Sliding Window Technique

Kami akan menyemak sama ada nilai yang ditunjukkan oleh kanan berada dalam set. Kami melihat bahawa ia tidak, jadi kami menambahnya pada set dan menambah tepat sebanyak 1. Selepas itu, kami mengambil maksimum antara saiz set dan nilai dalam longSubstr.
Longest Substring Without Repeating Characters with Sliding Window Technique

Kami menyemak sama ada nilai yang ditunjuk oleh kanan berada dalam set, bermakna c tiada dalam set. Jadi, kami menambahkannya pada set, naikkan tepat sebanyak 1 dan semak subrentetan maksimum.
Longest Substring Without Repeating Characters with Sliding Window Technique

Sekarang, kami menyemak sama ada nilai yang ditunjuk ke kanan, iaitu a, wujud dalam set. Kami melihatnya, jadi kami mengeluarkannya dari set dan bergerak ke kiri selangkah ke hadapan.
Longest Substring Without Repeating Characters with Sliding Window Technique

Nilai yang ditunjuk oleh kanan ialah b, dan ia wujud dalam set.

Oleh itu, kami menggerakkan penunjuk kiri satu langkah ke hadapan dan mengeluarkan b daripada set.
Longest Substring Without Repeating Characters with Sliding Window Technique

Sekarang kita melihat bahawa b berada dalam set, jadi kita mengalih keluar nilai yang ditunjuk oleh kiri dan bergerak ke kiri selangkah ke hadapan.
Longest Substring Without Repeating Characters with Sliding Window Technique

Nilai yang ditunjuk oleh kanan ialah c, dan ia wujud dalam set.
Oleh itu, kami mengeluarkannya dari set dan bergerak ke kiri selangkah ke hadapan.
Longest Substring Without Repeating Characters with Sliding Window Technique

Kami akan meneruskan teknik yang sama sehingga langkah 17 dan akan mendapat:
Longest Substring Without Repeating Characters with Sliding Window Technique

Berikut ialah pelaksanaan JavaScript

function longestSubstring(s) {
  let left = 0
  let right = 0

  let maxSubstr = 0
  let set = new Set()

  while (right < s.length) {
    const currentChar = s[right]

    if (!set.has(currentChar)) {
      set.add(currentChar)
      right++
      maxSubstr = Math.max(maxSubstr, right - left) // Update max substring length
    } else {
      set.delete(s[left])
      left++
    }
  }

  return maxSubstr
}

let inputString = 'abcabcbb'
console.log(longestSubstring(inputString)) // Output: 3 ("abc")

Salin selepas log masuk

Atas ialah kandungan terperinci Substring Terpanjang Tanpa Mengulang Aksara dengan Teknik Tetingkap Gelongsor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan