java, جاوا, حل مسائل با جاوا, ساختمان داده در جاوا

واروخوانه در جاوا (Palindrome In Java)

واروخوانه در جاوا

در این جلسه، تیم کدگیت را با توضیح واروخوانه در جاوا (palindrome) همراهی کنید. پیش نیاز این آموزش آشنایی با حلقه و روش بازگشتی است.

واروخوانه (palindrome)

قلب مستوی یا جناس قلب، همچنین شناخته شده با نام واروخوانه که معادل فارسی ایست برای پالیندروم  (Palindrome) به واژه، جمله، عدد یا هر چیز دیگری گفته می‌شود که خواندن آن از چپ به راست یا از راست به چپ کاملاً یکسان باشد. به‌عنوان مثال عدد ۱۵۳۴۳۵۱ یک عدد واروخوانه است، یا واژه «Malayalam» که نام یکی از زبانهای محلی جنوب غربی هندوستان است ویا واژه “داد” از این قاعده پیروی می‌کنند(ویکیپدیا).

پیاده سازی واروخوانه در جاوا

پیاده سازی واروخوانه در جاوا به دو صورت انجام میگیرد.

  1. پیاده سازی با روش بازگشتی
  2. پیاده سازی غیر بازگشتی

در این جا ما هر دو روش را توضیح میدهیم.

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

public static boolean loopPalindrome(String s) {
          int low = 0;

          int high = s.length() - 1;

          boolean isPalindrome = true;
          while (low < high) {
              if (s.charAt(low) != s.charAt(high)) {
                   isPalindrome = false;
                   break;
              }
              low++;
              high--;
          }
          return isPalindrome;
     }

ایده کلی کد بالا به این صورت است که ما رشته دریافتی را به صورت آرایه از کاراکتر در می آوریم. سپس دو متغیر به خانه اول و آخر آرایه اشاره میکند(low و high).حال تنها کاری که نیاز داریم این است که بررسی کنیم آرایه ما در خانه low و hight مقادیر برابری دارند یا خیر. بعد یک قدم به جلوتر میرویم و خانه های بعدی آرایه را بررسی میکنیم. تصویر زیر گویای کل مسئله است.

کد پیاده سازی بازگشتی واروخونه در جاوا در زیر آمده است.

   public static boolean recursive_palindrome(String s) {
          if (s.length() <= 1)
              return true;
          else if (s.charAt(0) != s.charAt(s.length() - 1))
              return false;
          else
              return recursive_palindrome(s.substring(1, s.length() - 1));
     }

از لحاظ مقدار کد این روش خیلی کوتاهتر است و ساده تر. در روش بازگشتی ما هر بار خانه اول و آخر را بررسی میکنیم و اگر با هم برابر بودند باید بقیه رشته نیز همین شرط (برابری کاراکتر اول و آخر) برقرار باشد و ما این کار را به صورت بازگشتی انجام میدهیم تا موقعی که طول رشته کوچکتر یا برابر با 1 شود.

تست برنامه

برای تست کدهای بالا کد main زیر را بزنید.

public static void main(String[] args) {
          String palindrome = "12321";
          String not_palindrome = "1211";

          if (recursive_palindrome(palindrome)) {
              System.out.println("palindrome");
          } else {
              System.out.println("not palindrome");
          }

          if (loopPalindrome(not_palindrome)) {
              System.out.println("palindrome");
          } else {
              System.out.println("not palindrome");
          }

     }

ویدئو آموزش

نوشته های مشابه

1 دیدگاه در “واروخوانه در جاوا (Palindrome In Java)

  1. پدرام گفت:

    }(public static boolean palind(String str

    (if(str.length()<=1

    return true;
    { ;((return (str.charAt(0) == str.charAt(str.length()-1
    دوستان میتونند از این کد ساده تر که به صورت بازگشتی هست استفاده کنند

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *