بررسی کننده پالیندروم آنلاین
بررسی کنید که آیا یک رشته پالیندروم است یا خیر.
بررسی کننده پالیندروم آنلاین
پالیندروم چیست؟
پالیندروم کلمه ای است که به صورت یکسان به جلو و عقب خوانده می شود. چند نمونه هستند
چشم
ماشین مسابقه
یک مرد، یک نقشه، یک کانال - پاناما!
چه از چپ به راست و چه از راست به چپ بخوانید، توالی یکسانی از کاراکترها را دریافت خواهید کرد. ما علائم نگارشی مانند کاما، نقطه، علامت سوال، علامت تعجب و حروف کوچک را نادیده خواهیم گرفت.
مرحله 0 - از کد فاصله بگیرید
من دوست دارم این ذهن را در طول هر مصاحبه یا مشکلی که باید در محل کار حل کنم حفظ کنم. عجله به کد ابتدا معمولاً یک استراتژی بازنده است، زیرا در حال حاضر باید در هنگام تلاش برای حل مشکل در ذهن خود، نحو را در نظر بگیرید.
کد باید آخرین بار باشد
نذار اعصابت خراب بشه به جای هک کردن یک راه حل و بالا بردن فشار خون، نفس عمیق بکشید و سعی کنید آن را روی تخته سفید یا دفترچه یادداشت بنویسید.
هنگامی که راه حلی را در نظر گرفتید، کد به راحتی ارائه می شود. تمام کارهای سخت در ذهن و یادداشت های شما اتفاق می افتد، نه روی صفحه کلید.
مرحله 1 - همه بدنه را برابر کنید
یک پالیندروم معتبر است چه بدنه آن به سمت جلو یا عقب خوانده شود یا نه. بنابراین "Racecar" معتبر است حتی اگر از نظر فنی "racecaR" به عقب نوشته شود.
برای محافظت از ما در برابر هر گونه مشکل حروف، نظری اضافه می کنم که می گوید همه چیز را کوچک می کنیم.
این کد من تا اینجاست (توجه کنید که هنوز کد واقعی ننوشتم).
تابع palindrome(str) {
// 1) ورودی را با حروف کوچک
}
palindrome ("چشم")؛
مرحله 2 - نویسه های غیر الفبایی را حذف کنید
درست مانند سناریوی حروف، یک پالیندروم معتبر است حتی اگر نشانهها و فاصلهها با هم هماهنگ نباشند.
به عنوان مثال "یک مرد، یک نقشه، یک کانال - پاناما!" معتبر است زیرا ما آن را بدون علامت یا فاصله بررسی می کنیم. اگر این کار را انجام دهید و همه چیز را کوچک کنید، تبدیل به این می شود.
"یک مرد، یک نقشه، یک کانال - پاناما!"
// همه چیز را کوچک کنید
// کاراکترهای غیر الفبایی را حذف کنید
"amanaplanacanalpanama"
که همان جلو و عقب می خواند.
الفبایی به چه معناست؟
این به معنای "حروف و اعداد" است، بنابراین هر چیزی از a-z و 0-9 یک کاراکتر الفبایی است. برای بررسی صحیح کاراکترهای غیرالفبایی ورودی ما (فضاها، علائم نگارشی، و غیره) باید بروند.
در اینجا شبه کد به روز شده ما است.
تابع palindrome(str) {
// 1) ورودی را با حروف کوچک
// 2) نویسه های غیر الفبایی را حذف کنید
}
palindrome ("چشم")؛
مرحله 3 - رشته را با معکوس آن مقایسه کنید
هنگامی که رشته ما به درستی تمیز شد، میتوانیم آن را به اطراف برگردانیم و ببینیم که آیا یکسان میخواند یا خیر.
من به مقایسه ای در این راستا فکر می کنم
بازگشت رشته === reversedString
من از سه برابر (===) برای مقایسه در جاوا اسکریپت استفاده می کنم. اگر دو رشته یکسان باشند، آن یک پالیندروم است و ما true را برمیگردانیم! اگر نه ما نادرست را برمی گردانیم.
در اینجا شبه کد به روز شده ما است.
تابع palindrome(str) {
// 1) ورودی را با حروف کوچک
// 2) نویسه های غیر الفبایی را حذف کنید
// 3) رشته === reversedString را برگرداند
}
palindrome ("چشم")؛
اجرای مرحله 1 - حروف کوچک
این ساده ترین مرحله است. اگر مطمئن نیستید که چگونه چیزی را در جاوا اسکریپت کوچک کنید، یک جستجوی سریع در گوگل باید به روش toLowerCase منجر شود.
این روشی است که در تمام رشته ها موجود است، بنابراین می توانیم قبل از انجام هر کار دیگری از آن برای کوچک کردن ورودی خود استفاده کنیم.
من نسخه کوچک را در متغیری به نام alphanumericOnly ذخیره می کنم زیرا در نهایت قرار است کاراکترهای الفبایی عددی را نیز حذف کنیم.
تابع palindrome(str) {
// 1) ورودی را با حروف کوچک
const alphanumericOnly = str.toLowerCase();
// 2) نویسه های غیر الفبایی را حذف کنید
// 3) رشته === reversedString را برگرداند
}
palindrome ("چشم")؛
اجرای مرحله 2 - فقط الفبایی
ما باید در اینجا کمی عمیق تر شیرجه بزنیم، زیرا این سخت ترین مرحله است. دقیقاً چگونه میخواهیم رشتهای از کاراکترهای غیرالفبایی آن را خالص کنیم؟
روش .match
درست مانند toLowerCase همه رشته ها از روشی به نام match پشتیبانی می کنند. پارامتری را می طلبد که نشان می دهد چه کاراکتر(هایی) را می خواهید در یک رشته معین جستجو کنید.
بیایید از نام من به عنوان مثال استفاده کنیم.
myName = 'yazeed';
myName.match('e');
// ["e"، نمایه: 3، ورودی: "yazeed"، گروهها: تعریف نشده]
همانطور که می بینید .match آرایه ای را با مقداری اطلاعات برمی گرداند. بخشی که ما به آن اهمیت می دهیم اولین عنصر، 'e' است. این همان چیزی است که ما در رشته "yazeed" پیدا کردیم.
اما اسم من دو e دارد! چگونه دیگری را مطابقت دهیم؟
عبارات منظم (Regex)
اولین پارامتر متد .match می تواند یک عبارت منظم باشد.
بیان منظم - دنباله ای از کاراکترها که یک الگوی جستجو را تعریف می کنند. همچنین به عنوان "Regex" شناخته می شود.
به جای علامت نقل قول برای یک رشته، پارامتر خود را بین اسلش های جلو قرار دهید.
ابزارهای مرتبط
تماس دارید
چیزی را از دست داده اید؟
در صورت تمایل می توانید ابزارهای گم شده را درخواست کنید یا با استفاده از فرم تماس ما بازخورد بدهید.
ارتباط با ما