جاوا

جلسه ۶۳: حذف کاراکترهای تکراری رشته به روش بازگشتی در جاوا

در این جلسه می آموزید که چگونه به روش بازگشتی کاراکترهای تکراری را از یک رشته حذف کنید. موارد زیر را بیان خواهیم کرد:
  • حذف موارد تکراری به چه معناست؟
  • پیاده سازی بوسیله کد
  • تفسیر کد
  • متد main
  • متد بازگشتی
  • حالت پایه
  • حالت بازگشتی
  • درک از طریق پشته

حذف موارد تکراری به چه معناست؟

وقتی رشته ای به ما داده می شود که دارای کاراکترهای مجاور تکراری باشد ، ما می خواهیم از هر کاراکتر فقط یکی را نگه داریم. برای این کار باید کاراکترهای تکراری را حذف کنیم. تصویر زیر این روند را نشان می دهد.

پیاده سازی بوسیله کد

کد زیر نحوه انجام این کار به روش بازگشتی را نشان می دهد. ابتدا ، اجازه دهید کد را ببینیم ، و سپس به توضیح آن خواهیم پرداخت. با تغییر مقادیر متن ورودی ، کد را امتحان کنید تا ببینید که چگونه با سایر رشته ها نیز کار می کند.
class RemoveDuplicatesClass {

    private static String remDuplicates(String text) {
        if (text.length() == 1) {
            return text;
        }
        
        if (text.substring(0,1).equals(text.substring(1,2))) {
            return remDuplicates(text.substring(1));
        }
        else {
            return text.substring(0,1) + remDuplicates(text.substring(1));
        }
    }

    public static void main( String args[] ) {
        String input1 = "Helloo";
        String input2 = "Thiss iiss aa teesstt";
        
        System.out.println( "Original string: " + input1);

        String output = remDuplicates(input1);

        System.out.println("String after: " + output);
    }   
}

تفسیر کد

کد بازگشتی را می توان به دو قسمت تقسیم کرد: متد بازگشتی و متد main که متد بازگشتی را فراخوانی می کند.

متد main

متد بازگشتی از طریق متد main فراخوانی می شود. ابتدا بررسی می کنیم که این متد از خطوط ۱۷ تا ۲۴ چه کاری انجام می دهد.
  • متد اصلی دو رشته به نام های input1 و input2 ایجاد می کند که از چندین کاراکتر تکراری مجاور تشکیل شده است.
  • متد remDuplicates با input1 به عنوان آرگومان فراخوانی می شود.
  • رشته output برای نشان دادن تغییرات نمایش داده می شود.

متد بازگشتی

حال متد بازگشتی را بررسی می کنیم: remDuplicates. کد مربوط به آن از خط ۴ تا خط ۱۳ در قطعه کد بالا قرار دارد.

حالت پایه

  • بلوک if اول از خط ۴ تا خط ۶ است و بررسی می کند که آیا طول رشته برابر ۱ است یا خیر. اگر طول رشته برابر ۱ باشد متد باز می گردد. این همان حالت پایه ما است که در آن متد خاتمه می یابد و به متد main باز می گردد و فراخوانی بازگشتی جدیدی انجام نمی شود.

حالت بازگشتی

  • این متد یک آرگومان می گیرد: رشته ای که قرار است معکوس شود.
  • شرط if از خط ۸ تا خط ۱۰ بررسی می کند که آیا کاراکتر قرار گرفته در مکان ۰ با کاراکتر قرار گرفته در مکان ۱ برابر است یا خیر. اگر شرایط درست باشد یعنی کاراکترها برابر باشند، متد بازگشتی remDuplicates با زیر رشته ای که از کاراکترهای مکان های ۱ تا انتهای رشته تشکیل شده است ، فراخوانی می شود.
  • اگر شرایط بالا نادرست باشد یعنی کاراکترها نابرابر باشند ، کاراکتر موجود در شاخص ۰ نیز به ابتدای رشته حاصل از فراخوانی بازگشتی remDuplicates افزوده می شود.

درک از طریق پشته

در این جلسه آموختید که چگونه می توانید با استفاده از روش بازگشتی در جاوا ، کاراکترهای تکراری متوالی را در یک رشته حذف کنید. اکنون که یاد گرفتید چگونه این کار را انجام دهید ، جلسه بعدی به شما نشان می دهد که چگونه رشته ها را به روش بازگشتی با ترتیب الفبایی ادغام کنید!

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

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

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

دکمه بازگشت به بالا