سلام،
یه مدت پیش مصاحبه فنی داشتم که یکی از سوالای الگوریتم که بهم دادن سوال خیلی خوبی بود که حتی داخل leetcode هم سوالش قرار داده شده، دوست داشتم راه حلی که بابتش سر و کار داشتم رو هم اینجا قرار بدم امیدوارم براتون مفید باشه.
خط یک: خب ما فرض می کنیم که یک رشته ای داریم که "abcabcbb" هستش و میخوایم حساب کنیم که اندازه طولانی ترین substring غیر تکراری چقدر هستش.
خط دو: یک متغیری به نام char_set مینویسیم و متد set() رو براش تعریف میکنیم
خط سوم و چهارم: متغیر های max_length, left هم با مقدار صفر تعریفشون میکنیم
خط پنجم که شروع سناریو کد ما هستش، به کمک متغیر right میایم بر اساس len رشتمون حلقه میندازیم. که خب میاد بر حسب هر المان بررسی میکنه آیا right[0] در متغیر char_set قرار گرفته یا نه و اگر نبود میره به بخش خط نهم و اون رشته رو به متغیر char_set اضافه میکنه. این کار تا آخرین المان رشتمون ادامه پیدا میکنه و به فرض وقتی با رشته ای برخورد کرد که داخل char_set قرار داشت، میاد از char_set اون رشته رو حذف میکنه و به متغیر left یکی اضافه میکنه و دوباره میره از اول، همون متغیری که حذف کرده بود رو دوباره اضافش میکنه و همین فرمون ادامه پیدا میکنه تا آخرین المان.
که خب خروجی ما که میشه همون "abc" و اندازش میشه ۳.
شما همینطور با دیباگر میتونین گام به گام بررسی کنین این کد رو که چطوری پیش میبره کار رو و تمام.
... خیلی مختصر تموم شد، در آخر این رو هم اضافه کنم که تابحال تجربه توضیح دادن این چنینی یک سوال الگوریتمی رو نداشتم و اگر نظری دارید بابت اینکه توضیح بهتری ارائه داده بشه ممنون میشم که بهم بگید ممنونم:)