فرشید جهان منش
فرشید جهان منش
خواندن ۱ دقیقه·۴ سال پیش

الگوریتم بررسی پالیندروم بودن یک string در سی شارپ

داشتم تجربه مصاحبه یکی از دوستان را میخواندم که یک سوالی پرسیده بودند که خیلی زمان از بررسی موضوع مشابهی برام گذشته بود بنابراین تصمیم گرفتم یک فلش بک به این موضوع داشته باشم و با شما به اشتراک بذارم.

خب فرض کنید یک عبارت بهمون میدن مثل "abba" و یا "madam" و حالا میگن پالیندروم بودنش رو بررسی کنید.(یعنی reverse عبارت با خود عبارت یکی بشه).

خب این کار رو با ساختار stack میشه به راحتی انجام داد.کدشو نوشتم و در پایین قرار دادم.

خب برای راحتی کار یک extension متد نوشتم که روی string ها کار میکنه .

در ابتدا نیمه اول اون عبارت رو وارد یک stack میکنیم. (البته اگر تعداد کارکتر ها فرد باشه ، عنصر وسط وارد نمیشه) .حالا تا اینجا ما یک پشته داریم که مثلا برای عبارت madam داخلش am قرار گرفته (a در بالای پشته و m در پایین پشته). در مواقعی که تعداد کارکتر ها فرد هست ، عنصر وسط سر جاش باقی میمونه و اصلا نیازی به چک کردنش نیست برای همین چک میکنیم که اگر تعدا کارکتر ها فرد بود ، i رو اضافه میکنیم .

در مرحله بعد از نصفه دوم پشته تا انتها جلو میریم و هر بار از پشته یک حرف رو pop میکنیم و قیاس با مقدار ادامه نصفه دوم پشته میکنیم. اگر مساوی نبودند قاعدتا اون رشته Palindrome نیست و این کار را تا زمان تمام شدن رشته انجام میدهیم.

با فرض بر اینکه push و pop کردن هزینه اجرایی 1 دارن برامون ، چون حلقه های while ما تا len/2 جلو میرن پس میتونیم نتیجه بگیریم پیچیدگی زمانی ما همین میشه.

palindromeپالیندرومپالیندروم در سی شارپپالیندروم در c
یک عدد برنامه نویس دات نت .علاقه مند به تکنولوژی های روز. جوون و پر از انگیزه :) همینا برای شناختم کافی نیست؟!
شاید از این پست‌ها خوشتان بیاید