آرین سلیمان‌زاده
  • خانه
  • وبلاگ
  • پادکست‌ها
  • ویدیوها
  • کتابخانه
  • تماس با من
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
پنل•تماس سریع

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

درخواست همکاری یا مشاوره

پیام خود را درباره همکاری، مشاوره، توسعه محصول یا پروژه نرم‌افزاری ارسال کنید.

LinkedInپاسخ سریع
کتابخانه الگوریتم ←/رشته‌ها/فاصله Levenshtein
یادداشت کامل الگوریتم

فاصله Levenshtein

Levenshtein Distance

Levenshtein Distance حداقل تعداد insert، delete و substitute تک‌کاراکتری برای تبدیل یک رشته به رشته دیگر است.

نوعالگوریتمدستهرشته‌هاسطحپیشرفتهپیچیدگی معمولO(mn)
جواب کوتاه و حرفه‌ای

اول این مفهوم را در ذهن نگه دار

Levenshtein Distance حداقل تعداد insert، delete و substitute تک‌کاراکتری برای تبدیل یک رشته به رشته دیگر است.

01
توضیح ساده

چطور کار می‌کند؟ ساده و مرحله‌ای

01

در DP معمولاً dp[i][j] فاصله ویرایشی prefixهای طول i و j را نگه می‌دارد.

02

اگر کاراکترها برابر باشند مقدار قطری می‌آید؛ وگرنه 1 + minimum از insert/delete/replace محاسبه می‌شود.

02
روند اجرا

الگوریتم را به شکل تصمیم‌های پشت سر هم بخوان

01

فرض‌های Unicode، case و normalization را روشن کن.

02

indexها یا prefix state را تعریف کن.

03

اگر الگوریتم اجازه می‌دهد اطلاعات match قبلی را reuse کن.

یک مثال کوچک برای فهم بهتر

یک ورودی خیلی کوچک را دستی اجرا کن و بعد از هر عملیات مهم state را بنویس. برای فاصله Levenshtein هدف این است که invariant را ببینی، نه اینکه کد را حفظ کنی.

پیچیدگی

O(mn)

این Complexity را حفظی نگو. اول مشخص کن مربوط به کدام عملیات یا بعد ورودی است؛ بعد هزینه را از روی loopها، عمق recursion، عملیات ساختمان داده و فرض‌های preprocessing نتیجه بگیر.

03
چه زمانی استفاده کنیم؟

موارد مناسب

  • وقتی جست‌وجو روی متن بزرگ یا تکراری است و روش naive گران می‌شود از الگوریتم تخصصی استفاده کن.
04
اشتباهات رایج

کجا معمولاً اشتباه می‌کنیم؟

  • نادیده گرفتن Unicode.
  • قاطی کردن Substring و Subsequence.
  • خطای index/prefix.
در مصاحبه چطور توضیح بدهیم؟

مدل یک پاسخ حرفه‌ای

قبل از recurrence دقیقاً state جدول DP را تعریف کن؛ این کار جواب را قابل‌فهم می‌کند نه حفظی.

مسئله→ایده اصلی→Invariant / State→Big-O→Trade-off
چند سؤال مصاحبه‌ای سریع

فاصله Levenshtein چه مسئله‌ای را حل می‌کند؟

Levenshtein Distance حداقل تعداد insert، delete و substitute تک‌کاراکتری برای تبدیل یک رشته به رشته دیگر است.

درباره Complexity چه چیزی باید بگویم؟

پیچیدگی معمول اینجا O(mn) است، اما جواب کامل باید این هزینه را به representation، constraint ورودی و عملیات غالب وصل کند.

رایج‌ترین اشتباه چیست؟

نادیده گرفتن Unicode.

موضوعات مرتبط برای ادامه مطالعهPrefix FunctionDynamic ProgrammingRolling Hash
منبع و مطالعه بیشتر

این درس برای مطالعه آرام و آمادگی مصاحبه به‌صورت مستقل نوشته شده و فهرست موضوعات آن از trekhleb/javascript-algorithms الهام گرفته است. مخزن اصلی implementationها، testها و README تخصصی هر موضوع را دارد.

باز کردن مخزن اصلی ↗
آرین سلیمان‌زاده

پورتفولیوی شخصی با تمرکز بر Agentic CRM، سامانه‌های هوشمند کسب‌وکار، مهندسی مدرن وب، طراحی سیستم‌های رابط کاربری و توسعه محصولات نرم‌افزاری کاربردی.

لینک‌های سریع

  • درباره من
  • وبلاگ
  • کتابخانه
  • تماس

ارتباط

  • soleimanzadeh.a.work@gmail.com
  • soleimanzadeh.uni@gmail.com

در دسترس: روزهای کاری

معمولاً پاسخ در ۲۴ ساعت

خبرنامه

به‌روزرسانی‌های مربوط به نوشته‌ها، پروژه‌ها و انتشارهای جدید را دریافت کنید.

© 2026 ariansoleimanzadeh.dev — تمامی حقوق محفوظ است.

لینکدین