CodeGym /جاوا بلاگ /Random-UR /جاوا میں سٹرنگ کو ریورس کرنے کے مختلف طریقے
John Squirrels
سطح
San Francisco

جاوا میں سٹرنگ کو ریورس کرنے کے مختلف طریقے

گروپ میں شائع ہوا۔
جاوا میں سٹرنگز کو حروف کی ایک صف کے طور پر بھی کہا جا سکتا ہے۔ جاوا میں سٹرنگز ٹیکسٹ/کریکٹرز کو اسٹور کرنے کے لیے استعمال ہوتی ہیں۔ جاوا پروگرامنگ زبان میں، تاروں کو آبجیکٹ سمجھا جاتا ہے۔ جاوا میں، سٹرنگز پہلے سے طے شدہ کی اشیاء ہیں جس کا نام String ہے۔ تمام سٹرنگ متغیر جاوا میں سٹرنگ کلاس کی مثالیں ہیں۔ اس لیے ہم سمجھ سکتے ہیں کہ جاوا میں سٹرنگز قدیم قسم کی نہیں ہیں جیسے کہ int یا char دوسری پروگرامنگ زبانوں میں۔ اس آرٹیکل میں، ہم پڑھیں گے کہ جاوا میں سٹرنگ کو کیسے ریورس کیا جائے، اس کے لیے شرط یہ ہے کہ آپ کو یہ معلوم ہونا چاہیے کہ java میں سٹرنگ کیسے بنائی جاتی ہے، اور ان بلٹ سٹرنگ طریقوں کا بنیادی تصور، اور لوپ کی مدد سے آپریشن کیسے کرنا ہے۔

مضمون کا دائرہ کار

- اس مضمون میں، ہم مختلف طریقوں کے بارے میں پڑھیں گے کہ جاوا میں سٹرنگ کو کیسے ریورس کیا جائے۔ - ہم کچھ پہلے سے بنائے گئے طریقے بھی دیکھیں گے جن کے ذریعے ہم جاوا میں سٹرنگ کو ریورس کر سکتے ہیں۔ - ہم جاوا میں ہر ریورس طریقہ کی وقت اور جگہ کی پیچیدگی کے بارے میں بھی پڑھیں گے۔ - جاوا میں سٹرنگ کو ریورس کرنے کے کئی طریقے ہیں، ہر ایک اپنے فائدے اور نقصانات کے ساتھ۔ اس آرٹیکل میں، ہم جاوا میں سٹرنگ کو ریورس کرنے کے لیے عام طور پر استعمال ہونے والے کچھ طریقوں کو تلاش کریں گے۔

تعارف

جاوا میں سٹرنگز ناقابل تغیر آبجیکٹ ہیں، سٹرنگز صرف جاوا میں حروف کی ایک ترتیب ہیں۔ جاوا میں سنگل لائن سٹرنگز کو سنگل اقتباسات کے ساتھ بیان کیا جاتا ہے جبکہ جاوا میں ایک سے زیادہ لائنوں کے سٹرنگز کو ٹرپل کوٹس کے ساتھ بیان کیا جاتا ہے، جاوا کے پاس کئی سٹرنگ طریقے دستیاب ہیں، لیکن آج اس آرٹیکل میں ہم مختلف طریقوں کے بارے میں پڑھیں گے کہ جاوا میں سٹرنگ کو کیسے ریورس کیا جائے۔ جاوا پروگرامنگ زبان دنیا میں سب سے زیادہ استعمال ہونے والی پروگرامنگ زبانوں میں سے ایک ہے، اور یہ اپنی سادگی اور استعمال میں آسانی کے لیے مشہور ہے۔ سب سے عام آپریشنز میں سے ایک جو پروگرامر سٹرنگز پر انجام دیتے ہیں ان کو ریورس کرنا ہے۔ اس مضمون میں، ہم جاوا میں سٹرنگ کو ریورس کرنے کے مختلف طریقوں پر بات کریں گے۔ سب سے پہلے، ہم سب سے عام طریقہ کے بارے میں پڑھتے ہیں جو جاوا میں for loop استعمال کر رہا ہے:

for لوپ کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو ریورس کریں:

یہ تکنیک ایک فار لوپ کا استعمال کرکے جاوا میں سٹرنگ کو ریورس کرنے کے آسان ترین طریقوں میں سے ایک ہے۔ ہم سٹرنگ کے حروف کے ذریعے اختتام سے شروع تک اعادہ کر سکتے ہیں، اور انہیں نئے سٹرنگ متغیر میں شامل کر سکتے ہیں۔ ایک for loop کا استعمال کرتے ہوئے سٹرنگ کو ریورس کرنے کا طریقہ یہاں ایک مثال ہے ۔
//in the above code we have reversed the string using a for loop in java
public class reverseofthestring {
  public static void main(String[] args) {

    String s1 = "java is fun";
      // we are creating the second string to store the reversed string and print it while iterating the for loop
    String s2 = "";

    for(int i = s1.length()-1; i>=0; i--)
    {
        // in the above line we have stored the reversed string by iterating the for loop from the last index and stored the value in the second string created s2.
      s2 = s2 + s1.charAt(i);
    }

    System.out.print("The reversed string of the '"+s1+"' is: " );
    System.out.println(s2);
  }
}
آؤٹ پٹ
The reversed string of the s1 is:nuf si avaj
مندرجہ بالا کوڈ میں، ہم نے پہلے s1 نامی اسٹرنگ کا ان پٹ لیا ہے اور ایک خالی اسٹرنگ s2 بنائی ہے اور پھر آخری انڈیکس سے for لوپ کو دہرایا ہے اور پھر ہم نے اس سٹرنگ میں ہر کریکٹر کی ویلیو محفوظ کی ہے۔ بہتر اور واضح وضاحت کے لیے مندرجہ بالا کوڈ کو اپنے ایڈیٹر میں چلائیں۔ مندرجہ بالا کوڈ کی وقتی پیچیدگی O(N) ہے، اور جیسا کہ ہم نے تمام n عناصر پر اعادہ کیا ہے اوپر والے کوڈ کی خلائی پیچیدگی O(N) ہے۔ اب ہم اگلے عمل کے بارے میں پڑھتے ہیں جو سٹرنگ بلڈر کا استعمال کرتے ہوئے سٹرنگ کو ریورس کر رہا ہے، تو اب ہم اس کے بارے میں تفصیل سے پڑھیں:

سٹرنگ بلڈر کلاس کا استعمال کرتے ہوئے سٹرنگ کو ریورس کرنا

ہم StringBuilder کلاس کا استعمال کر کے جاوا میں سٹرنگ کو بھی ریورس کر سکتے ہیں۔ StringBuilder کلاس ایک ریورس() طریقہ فراہم کرتی ہے جسے سٹرنگ کو ریورس کرنے کے لیے استعمال کیا جا سکتا ہے۔ Java StringBuilder کلاس کا ریورس() طریقہ اس کریکٹر سیکوینس کو ترتیب کے ریورس سے بدلنے کے لیے استعمال کیا جاتا ہے۔ جاوا میں StringBuilder کلاس میں toCharArray() طریقہ نہیں ہے، جبکہ String کلاس میں toCharArray() طریقہ ہے۔ اب ہم ایک مثال کی مدد سے سمجھتے ہیں:
public class reverseusingbuilder {
    public static void main(String[] args) {
        StringBuilder s1 = new StringBuilder("abc");
        System.out.println("The original string1 is  = " + s1);
        StringBuilder s2 = new StringBuilder("cab");
        System.out.println("The original string2 is = " + s2);
         StringBuilder s3 = new StringBuilder("wer");
        System. out.println("The original string3 is = " + s3);
        // reversing of stringbuilder
        System.out.println("The reverse of the string is reverse1 = " + s1.reverse());
        System.out.println("The reverse of the string2 is reverse2 = " + s2.reverse());
         System.out.println("The reverse of the string3 is reverse2 = " + s3.reverse());
    }
}
آؤٹ پٹ
The original string1 is  = abc
The original string2 is  =cab
The original string3 is  =wer
The reversed string1 is  = cba
The reversed string2 is  = bac
The reversed string3 is  =rew
اس طریقہ میں، ہم دیکھ سکتے ہیں کہ ان بلٹ سٹرنگ بلڈر کلاس کا استعمال کرتے ہوئے ہم نے سٹرنگ کو ریورس کر دیا ہے۔ یہ طریقہ بہت کارآمد ہے، کیونکہ اس کے لیے سٹرنگ کے ذریعے صرف ایک پاس کی ضرورت ہوتی ہے۔ تاہم، اس کے لیے ایک نئے StringBuilder آبجیکٹ کی تخلیق کی ضرورت ہوتی ہے، جو کچھ اوور ہیڈ کا اضافہ کر سکتا ہے۔ یہ طریقہ نسبتاً آسان اور سمجھنے میں آسان ہے، لیکن یہ دوسرے طریقوں کے مقابلے میں کم کارگر ہو سکتا ہے، کیونکہ اس کے لیے سٹرنگ سے متعدد گزرنے اور ہر کردار کے لیے ایک نئی سٹرنگ بنانے کی ضرورت ہوتی ہے۔ بہتر اور واضح وضاحت کے لیے مندرجہ بالا کوڈ کو اپنے ایڈیٹر میں چلائیں۔ اب ہم تکرار تکنیک کا استعمال کرتے ہوئے سٹرنگ کو ریورس کرنے کا ایک اور طریقہ دیکھتے ہیں:

تکرار کا استعمال کرتے ہوئے سٹرنگ کو ریورس کریں۔

تکرار ایک تکنیک ہے جس میں ایک فنکشن خود کو کال کرتا ہے۔ ہم ایک سٹرنگ کو چھوٹے سبسٹرنگز میں توڑ کر اسے ریورس کرنے کے لیے recursion کا استعمال کر سکتے ہیں۔ جاوا میں تکرار ایک ایسا عمل ہے جس میں ایک طریقہ خود کو مسلسل کال کرتا ہے۔ recursion کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو ریورس کرنے کے لیے پہلے ہمیں سٹرنگ سے پہلا کریکٹر ہٹانا ہو گا اور پھر اس کریکٹر کو سٹرنگ کے آخر میں جوڑنا ہو گا اور پھر ہمیں اوپر والے سٹیپ کو اس وقت تک دہرانا ہو گا جب تک کہ ان پٹ سٹرنگ خالی نہ ہو جائے۔ اب ہم اسے ایک مثال کی مدد سے سمجھتے ہیں:
public class reverse string
{
//in this line we are writing the recursive function to reverse a string
public String reverse string(String s1)
{
//first we will check if the string is empty or not
if(s1.isEmpty())
{
System. out.println("String is empty.")
//if the above condition is true then it returns the same string as if the string is empty itself then we cannot reverse the string
return s1;
}
else
{
return reverseString(s1.substring(1))+s1.charAt(0);
}
}
public static void main(String[] args)
{
reversestring q1 = new reversestring();
String res1 = q1.reverseString("JAVA IS FUN");
String res2 = q1.reverseString("STRINGS OBJECTS JAVA");
String res3 = q1.reverseString("IMMUTABLE CLASS OBJECTS");
System.out.println(res1);
System.out.println(res2);
System.out.println(res3);
}
}
آؤٹ پٹ
NUF SI AVAJ
AVAJ STCEJBO SGNIRTS
STCEJBO SSALC ELBATUMMI
لہٰذا ہم دیکھ سکتے ہیں کہ اوپر میں ریکریشن کا استعمال کرتے ہوئے ہم نے سٹرنگ کو الٹ دیا ہے ہم نے پہلے یہ چیک کیا ہے کہ آیا سٹرنگ خالی ہے یا نہیں اگر سٹرنگ خالی ہو گی تو کوئی کریکٹر نہیں ہو گا جسے ریورس کیا جا سکے۔ یہ طریقہ for-loop طریقہ سے زیادہ کارآمد ہو سکتا ہے، کیونکہ اس کے لیے سٹرنگ کے ذریعے صرف ایک پاس کی ضرورت ہوتی ہے۔ تاہم، یہ زیادہ پیچیدہ اور سمجھنا مشکل بھی ہوسکتا ہے، کیونکہ اس میں تکرار کا استعمال شامل ہے ۔ بہتر اور واضح وضاحت کے لیے مندرجہ بالا کوڈ کو اپنے ایڈیٹر میں چلائیں۔ آئیے ایک اور مثال دیکھتے ہیں کہ جاوا میں تکرار کا استعمال کرتے ہوئے اسٹرنگ کو کیسے ریورس کیا جائے:
public static String reverseusingrecursion(String s1) {
    if (s1.length() == 1) {
        return s1;
    }
    //We have applied recursion in this line
    return s1.charAt(s1.length() - 1) + reverseUsingRecursion(s1.substring(0, s1.length() - 1));
}
اب آئیے جاوا میں اسٹرنگ کو ریورس کرنے کے دوسرے طریقے کے بارے میں پڑھتے ہیں جو سرنی کا استعمال کر رہا ہے:

ایک صف کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو ریورس کریں۔

ہم ایک سٹرنگ کو کریکٹر اری میں تبدیل کر کے، ارے کو تبدیل کر کے، اور پھر اسے دوبارہ سٹرنگ میں تبدیل کر کے بھی ریورس کر سکتے ہیں۔ سب سے پہلے، ہمیں دی گئی سٹرنگ کے سائز کی ایک خالی کریکٹر اری بنانا ہے، پھر ہمیں دی گئی سٹرنگ کے حروف کے ساتھ پیچھے کی طرف کیریکٹر اری کو بھرنا ہوگا، اور پھر آخر میں ہمیں کریکٹر اری کو اسٹرنگ میں تبدیل کرنا ہوگا۔ کاپی کرنے کا طریقہ اور اسے واپس کریں۔ اب ہم اسے ایک مثال کی مدد سے سمجھتے ہیں:
public class Main
{
    // In this Method of conversion we have to reverse a string in Java using a character array
    public static String reverse(String s1)
    {
        // we have to check if the string is empty or not and return if the string is null or empty
        if (s1 == null || s1.equals("")) {
            return s1;
        }
 // if it is equal to empty then we will simply print the string and break it.
        // else we will find the string length
        int len = str.length();

        // and then we have to create a character array of the same size as that of the string to store the value after reversing
        char[] new_arr = new char[n];

        // and by iterating the loop backward we have to fill the character array backward with characters in the string
        for (int i = 0; i < len; i++) {
            new_arr[len - i - 1] = str.charAt(i);
        }

        // and in the final step after reversing we have to convert the character array to string and return it
        to return String.copy value of(new_arr);
    }

    public static void main(String[] args)
    {
        // taking a string input for reverse
        String s1 = "JAVA IS FUN";

        // In this line we are calling the reverse function and reversing the string
        str = reverse(str);

        System.out.println("The reversed string is " + s1);
    }
}
آؤٹ پٹ
NUF SI AVA
اس طریقے میں ہمیں سٹرنگ کو ایک کریکٹر اری میں ریورس کرنا ہے جس کے بارے میں ہم جانتے ہیں اس لیے سب سے پہلے ہم چیک کریں گے کہ آیا سٹرنگ خالی ہے یا نہیں اور اگر سٹرنگ null ہے یا خالی ہے اگر یہ خالی کے برابر ہے تو ہم صرف اسٹرنگ کو پرنٹ کریں گے اور بریک ورنہ ہمیں سٹرنگ کی لمبائی مل جائے گی اور پھر ہمیں ریورس کرنے کے بعد ویلیو کو اسٹور کرنے کے لیے سٹرنگ کے سائز کی ایک کریکٹر اری بنانا ہوگی اور لوپ کو بیکورڈ کر کے ہمیں کریکٹر اری کو پیچھے کی طرف سٹرنگ میں موجود حروف سے بھرنا ہوگا۔ اور ریورس کرنے کے بعد آخری مرحلے میں ہمیں کریکٹر اری کو سٹرنگ میں تبدیل کرنا ہوگا اور اسے واپس کرنا ہوگا۔ بہتر اور واضح وضاحت کے لیے مندرجہ بالا کوڈ کو اپنے ایڈیٹر میں چلائیں۔ اب آئیے اگلے مرحلے کے بارے میں پڑھیں کہ ہم اسٹریم API کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو ریورس بھی کر سکتے ہیں۔ تو اب آئیے چند مثالوں کی مدد سے ان کے بارے میں تفصیل سے پڑھیں:

سٹریم API کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو ریورس کریں:

جاوا 8 نے سٹریم API متعارف کرایا جسے جمع کرنے پر فنکشنل طرز کے آپریشنز کرنے کے لیے استعمال کیا جا سکتا ہے۔ ہم سٹریم API کا استعمال کریکٹرز کے ایک سلسلے میں تبدیل کر کے، سٹریم کو ریورس کر کے، اور پھر اسے واپس سٹرنگ میں تبدیل کر کے اسے ریورس کرنے کے لیے استعمال کر سکتے ہیں۔ ہم مختلف اسٹریمز اور جمع کرنے والوں کا استعمال کرتے ہوئے جاوا میں ایک سٹرنگ کو ریورس کر سکتے ہیں پہلے ہمیں ایک سٹرنگ ان پٹ کرنا ہے اور پھر اسٹرنگ بلڈر آبجیکٹ میں پوری سٹرنگ پر ایک نقشہ استعمال کرنا ہے اور ساتھ ہی اسے StringBuilder کلاس کے ریورس() طریقہ کا استعمال کرتے ہوئے ریورس کرنا ہے۔ پھر آخر میں، سٹریم کا استعمال کرتے ہوئے الٹ سٹرنگ کو جمع کرنا۔ جمع () طریقہ اور جمع کرنے والے۔ joining() طریقہ ہم دونوں اصلی/الٹ سٹرنگز کو ان کی لمبائی کے ساتھ پرنٹ کریں گے۔ اب ہم اسے ایک مثال کی مدد سے سمجھتے ہیں:
public static String reverseUsingStream(String str) {
    return str. chars()
              .mapToObj(c -> (char) c)
              .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
              .reverse()
              .toString();
}
اس مثال میں، ہم نے جاوا اسٹریمز اور جمع کرنے والوں کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو الٹ دیا ہے۔ بہتر اور واضح وضاحت کے لیے مندرجہ بالا کوڈ کو اپنے ایڈیٹر میں چلائیں۔ اب ہم دیکھتے ہیں کہ ہم اسٹیک کا استعمال کرتے ہوئے سٹرنگ کو کیسے ریورس کر سکتے ہیں۔ اب ہم ایک مثال کی مدد سے اس کے بارے میں تفصیل سے پڑھیں:

اسٹیک کا استعمال کرتے ہوئے سٹرنگ کو ریورس کریں۔

جاوا میں اسٹرنگ کو ریورس کرنے کا ایک اور طریقہ ہے جو اسٹیک کا استعمال کرتے ہوئے ہے۔ خیال یہ ہے کہ ان پٹ سٹرنگ کے ہر کریکٹر کو اسٹیک کی طرف دھکیلیں اور پھر الٹ سٹرنگ حاصل کرنے کے لیے اسٹیک سے کریکٹر پاپ کریں۔ اب آئیے ایک مثال کی مدد سے اس کے بارے میں مزید پڑھیں:
public static String reverse string(String input) {
    Stack<character> stack = new Stack<>();
    for (int i = 0; i < input.length(); i++) {
        stack.push(input.charAt(i));
    }
    StringBuilder sb = new StringBuilder();
    while (!stack.isEmpty()) {
        sb.append(stack.pop());
    }
    return sb.toString();
}

</character>
مندرجہ بالا مثال میں، ہم نے سب سے پہلے ایک خالی اسٹیک بنایا اور پھر سٹرنگ کو الٹ کر اسٹیک کے اندر عناصر کو داخل کیا۔ یہ طریقہ آسان، سمجھنے میں آسان اور کارآمد ہے۔ بہتر اور واضح وضاحت کے لیے مندرجہ بالا کوڈ کو اپنے ایڈیٹر میں چلائیں۔

نتیجہ

پہلا طریقہ StringBuilder کلاس کا استعمال کرتے ہوئے ہے، جس میں ایک بلٹ ان ریورس() طریقہ ہے جو ایک نئی سٹرنگ لوٹاتا ہے جو اصل سٹرنگ کا الٹ ہے۔ دوسرا طریقہ ایک for لوپ کا استعمال کر رہا ہے، جہاں ہم اصل سٹرنگ کو چار صف میں تبدیل کرتے ہیں اور ارے کے ذریعے ریورس ترتیب میں اعادہ کرتے ہیں، متعلقہ حروف کو ایک نئی چار صف میں تفویض کرتے ہیں، اور آخر میں اس چار سرے کو استعمال کرتے ہوئے ایک نئی سٹرنگ بناتے ہیں۔ تیسرا طریقہ recursion کا استعمال کر رہا ہے، جہاں ہم ایک recursive فنکشن کہتے ہیں اور سٹرنگ کے پہلے کریکٹر کو باقی حروف کے الٹ سبسٹرنگ کے ساتھ جوڑ کر مسئلہ حل کرتے ہیں۔ چوتھا طریقہ جاوا میں سٹرنگ کو ریورس کرنے کے لیے ایک صف کا استعمال کرنا ہے۔ پانچویں طریقہ میں، ہم نے اسٹرنگ کو ریورس کرنے کے لیے اسٹریم API اور جاوا کلیکٹر کا استعمال کیا اور، آخری طریقہ میں ہم نے جاوا میں سٹرنگ کو ریورس کرنے کے لیے اسٹیک کا استعمال کیا۔ ان طریقوں میں سے ہر ایک کے اپنے فوائد اور نقصانات ہیں، اور طریقہ کار کا انتخاب مسئلہ کی مخصوص ضروریات اور پروگرامر کی ترجیح پر منحصر ہے۔ مجموعی طور پر، یہ طریقے سٹرنگ ہیرا پھیری میں جاوا کی لچک اور استعداد کو ظاہر کرتے ہیں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION