الوقت/التاريخ الآن هو الخميس مايو 09, 2024 10:58 am

3 نتيجة بحث عن reverse

[Java] الطرق المختلفة لفحص النصوص و الارقام و التاكد من انها قيم متناظرة أم لا Palindrome In Java

اهلا بكم 

تحقق ما إذا كان النص أو الرقم المعطى متناظر أم لا؟ ...من أكثر الاسئلة التى تواجه الطلبة الاكاديميين وهناك عدة طرق لفعل ذلك ...فى هذا المقال سنحاول شرحها 

ما هو التناظر ؟

الارقام أو الكلمات او حتى الجمل المتناظرة هى التى يمكنك قرائتها من اليمن أو من الشمال و تعطيك نفس النتيجة بمعنى أخر هو نفس الرقم او الكملة بشكل عسكي  على سبيل المثال 545 ، 151 ، 34543 ، 343 ، 171 ، 48984 هي أرقام متناظرة ....ليبيا , Radar, Madam كلمات متناظرة ...ومن الجمل المتناظرة Was it a car or a cat I saw 

كيف يمكن كتابة برنامج JAVA لفحص النص او الرقم المعطى متناظر أم لا ؟

توجد عدة طرق لفعل ذلك على النحو التالى :

1_باستخدام التحقق من طول المدخلات 

فى هذه الطريقة يتم التحقق من طول المدخلات. إذا كان طول الكلمة أو النص هو صفر أو واحد ، فسيتم إرجاع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. إذا كان طول النص المدخل أكثر من واحد ، فإنه يتحقق من مساواة طرفي النص. إذا لم يكن كلا الطرفين متساويين ، فيُرجع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. إذا كان كلا الطرفين متساويين ، فستتم إعادة الاتصال مرة أخرى باستخدام أحرف من كلا الطرفين.

الكود:


public class Test1 {

    static boolean isItPalindrome(String S)
    {
        
       //اذا كان النص اقل من حرفين فمعنى ذلك انه متناظر ويتم ارجاع ذلك
       if(S.length() < 2)
        {
            return true;
        }
        else
        {
            //التحقق من مساواة طرفى النص
            
            if(S.charAt(0) != S.charAt(S.length()-1))
            {
                //اذا كان الطرفين غير متساويات يتم ارجاع خاطئ
                
                return false;
            }
            else
            {
                //اذا كان الطرفين متساويين يتم ارجاع الطريقة يتم حذف الطرفين ثم العودة لفحص الطرفين الجديدن
                
                return isItPalindrome(S.substring(1, S.length()-1));
            }
        }
        
    }
  
    public static void main(String[] args) {
      
       String S ="Rotator";
       //قبل التاكد من النص نقوم بحذف اى فارغ قد يوجد ونفى حالة الاحرف حتى نتمكن من مقارنة النص سواء كان باحرف كبيرة او صغيرة
       String cleanInputString = S.replaceAll("\\s+", "").toLowerCase();
        
        if (isItPalindrome(cleanInputString))
        {
            System.out.println(" is a palindrome");
        }
        else
        {
            System.out.println(" is not a palindrome");
        }
      
    }
    
}



2_باستخدام الطريقة StringBuffer

تمتلك الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الاسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الذى يقوم بعكس النص المعطى الية حيث يتم عكس النص المحدد باستخدام أسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] . فإذا كانت السلسلة الأصلية والسلسلة المعكوسة متشابهتين ، فان النص يكون متناظر و العكس صحيح ...ويتم ذلك على النحو التالى :

الكود:


public class Test1 {

  
    public static void main(String[] args) {
      
       String S ="Rotator";
      
       // استخدام الطريقة لعكس النص المدخل
       String S2  = new StringBuffer(S).reverse().toString();
        
        
      
       //مقارنة النص الاصلى مع النص المعكوس للتاكد المساواة بينهم من عدمة
        if (S.equalsIgnoreCase(S2))
        {
            System.out.println(" is a palindrome");
        }
        else
        {
            System.out.println(" is not a palindrome");
        }
      
    }
    
}



3_ استخدام الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

منذ الاصدار 8 للجافا يمكنك استخدام الدالة أو الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] للتحقق مما إذا كانت السلسلة المعطاة متناظرة أم لا وذلك على النحو التالى :

الكود:

import java.util.stream.IntStream;


public class Test1 {

  
    public static void main(String[] args) {
      
       String S ="Rotator";
      
        boolean isItPalindrome = IntStream.range(0, S.length()/2).
                noneMatch(i -> S.charAt(i) != S.charAt(S.length() - i -1));
        
        if (isItPalindrome)
        {
            System.out.println(" is a palindrome");
        }
        else
        {
            System.out.println(" is not a palindrome");
        }    }
    
}


4_ الطريقة الاخيرة و التى تسخدم فى الارقام فقط

الكود:

public class Test1 {

  
    public static void main(String[] args) {
      
       int n = 171;
       int sum = 0, r;
    int temp = n;    
       while(n>0)
      {    
        r = n % 10;  
        sum = (sum*10)+r;    
        n = n/10;    
       }    
      if(temp==sum)    
        System.out.println("It is a Palindrome number.");    
      else    
        System.out.println("Not a palindrome");
    
    }
    
}
من طرف أحمد مناع
في السبت فبراير 16, 2019 7:49 pm
 
ابحث في: التعامل مع حزم الجافا java package
موضوع: [Java] الطرق المختلفة لفحص النصوص و الارقام و التاكد من انها قيم متناظرة أم لا Palindrome In Java
المساهمات: 0
مشاهدة: 1152

[Java] التعامل مع الفئة Java StringBuilder

أهلا بكم 

_الفئة Java StringBuilder


هى إحدى الفئات التى توفرها لغة الجافا منذ الاصدار JDK 1.5 للتعامل مع مع سلسلة نصية قابلة للتغيير و التعديل بطريقة حيوية من (إلحاق، وإدراج، وحذف وتعديل وغيرها) فهى تشبة الى حد كبير الفئة  StringBuffer التى تحدثنا عليها فى مقال سابق وربما يكون الفرق الوحيد بينهما أن الفئة #StringBuilder متزامنة synchronized فى حين أن الفئة #StringBuffer غير متزامنة non-synchronized 

_مشيدات الفئة StringBuilder



اهم ثلاث مشيدات الفئة #StringBuilder التى يمكن استخدامها لانشاء و التعامل مع النصوص من خلال تلك الفئة على النحو التالى :


1_المشيد الاول :
الكود:
StringBuilder()


ينشىء مخزن مؤقت فارغ لسلسلة نصية مع السعة الأولية لـ 16حرف

2_ المشيد الثاني :
الكود:
StringBuilder(String str)


ينشىء مخزن مؤقت لسلسلة نصية بقيمة السلسة المحددة

3_المشيد الثالث :
الكود:
StringBuilder(int length)


ينشىء مخزن فارع مؤقت لسلسلة نصية مع السعة المحددة كطول


طرق و دوال الفئة StringBuilder


تحتوي الفئة #StringBuilder على العديد من الطرق و الدوال التى تساعدنا فى التعامل مع سلاسل البيانات من تعديل و تغير و الحاق و خلافة و ذلك على النحو التالى :

1_الطريقة #append

تقوم تلك الطريقة بإلحاق قيمة نصية الى المخزن الموقت #StringBuilder ....مثال : الحاق كلمة #java الى الكلمة #Hello على النحو التالى :

الكود:
class StringBuilderExample{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello ");  
sb.append("Java");  
System.out.println(sb);  
}  
}  


المخرجات :

Hello Java


2_ الطريقة  #insert

تقوم تلك الطريقة بادراج قيمة نصية للمخزن الموقت StringBuilder#r مع تحديد موضع الادراج ... المثال التالى يوضح كيفية ادراج الكلمة #Java بعد الحرف الاول للقيمة المخزنة فى #StringBuilder :

الكود:
class StringBuilderExample2{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello ");  
sb.insert(1,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :
HJavaello


3_الطريقة #replace

تقوم تلك الطريقة باستبدال القيمة النصية بالمخزن #StringBuilder بالقيمة الحالية او المعطاة اليها و يتم ذلك من ذلك تحديد موضع الاستبدال و عدد الاحرف التى سيتم اسبدالها من القيمة #StringBuilder ....المثال التالى يوضح الفكرة :

الكود:
class StringBuilderExample3{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.replace(1,3,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :يمكنك ملاحظة أن عملية الاستبدال تمت بعد الحرف الاول وتم استبدال عدد 3 احرف من الكلمة الاصلية #Hello بالكلمة Java
HJavalo


4_الطريقة #delete

تقوم تلك الطريقة بحذف القيمة النصية بالمخزن #StringBuilder و يمكن تحديد موضع عملية الحذف وايضا عدد ما يتم حذفة ...المثال التالى يوضح الفكرة :
الكود:
class StringBuilderExample4{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.delete(1,3);  
System.out.println(sb);  
}  
}  


المخرجات :
Ho

5_ الطريقة #reverse

تقوم تلك الطريقة بعكس السلسة النصية الحالية المخزنة فى #StringBuilder ....مثال يوضح الفكرة

الكود:
class StringBuilderExample5{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.reverse();  
System.out.println(sb);//prints olleH  
}  
}  


المخرجات :
olleH

6_ الطريقة #capacity

تقوم تلك الطريقة بارجاع سعة المخزن #StringBuilder ...مثال توضيحيى :

الكود:
class StringBuilderExample6{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
}  
}  


المخرجات :

16
16
34

7_ الطريقة #ensureCapacity

تضمن طريقة #ensureCapacity أن السعة المحددة هي الحد الأدنى للسعة الحالية. أما إذا كان أكبر من السعة الحالية ، فإنه يزيد السعة بواسطة (oldcapacity * 2) +2. على سبيل المثال ، إذا كانت سعتك الحالية 16 ، فسوف تكون (16 * 2) + 2 = 34.

الكود:
class StringBuilderExample7{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
sb.ensureCapacity(10);//now no change  
System.out.println(sb.capacity());//now 34  
sb.ensureCapacity(50);//now (34*2)+2  
System.out.println(sb.capacity());//now 70  
}  
}  


تحياتى لك
من طرف زهراء
في الخميس يناير 24, 2019 8:21 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] التعامل مع الفئة Java StringBuilder
المساهمات: 1
مشاهدة: 978

[Java] التعامل مع الفئة Java StringBuffer

أهلا بكم 

_الفئة Java StringBuffer


هى إحدى الفئات التى توفرها لغة الجافا للتعامل مع النصوص تشبة الى حد كبير الفئة #string إلا أن الفئة #StringBuffer تسخدم لإنشاء و التعامل مع سلسلة نصية قابلة للتغيير و التعديل بطريقة حيوية من (إلحاق، وإدراج، وحذف وتعديل وغيرها)

_مشيدات الفئة StringBuffer



اهم ثلاث مشيدات الفئة #StringBuffer التى يمكن استخدامها لانشاء و التعامل مع النصوص من خلال تلك الفئة على النحو التالى :


1_المشيد الاول :
الكود:
StringBuffer()


ينشىء مخزن مؤقت فارغ لسلسلة نصية مع السعة الأولية لـ 16حرف

2_ المشيد الثاني :
الكود:
StringBuffer(String str)


ينشىء مخزن مؤقت لسلسلة نصية بقيمة السلسة المحددة

3_المشيد الثالث :
الكود:
StringBuffer(int capacity)


ينشىء مخزن فارع مؤقت لسلسلة نصية مع السعة المحددة كطول


طرق و دوال الفئة StringBuffer


تحتوي الفئة #StringBuffer على العديد من الطرق و الدوال التى تساعدنا فى التعامل مع سلاسل البيانات من تعديل و تغير و الحاق و خلافة و ذلك على النحو التالى :

1_الطريقة #append

تقوم تلك الطريقة بإلحاق قيمة نصية الى المخزن الموقت #StringBuffer ....مثال : الحاق كلمة #java الى الكلمة #Hello على النحو التالى :

الكود:
class StringBufferExample{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello ");  
sb.append("Java");  
System.out.println(sb);  
}  
}  


المخرجات :

Hello Java


2_ الطريقة  #insert

تقوم تلك الطريقة بادراج قيمة نصية للمخزن الموقت StringBuffe#r مع تحديد موضع الادراج ... المثال التالى يوضح كيفية ادراج الكلمة #Java بعد الحرف الاول للقيمة المخزنة فى #StringBuffer :
الكود:
class StringBufferExample2{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello ");  
sb.insert(1,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :
HJavaello



3_الطريقة #replace

تقوم تلك الطريقة باستبدال القيمة النصية بالمخزن #StringBuffer بالقيمة الحالية او المعطاة اليها و يتم ذلك من ذلك تحديد موضع الاستبدال و عدد الاحرف التى سيتم اسبدالها من القيمة #StringBuffer ....المثال التالى يوضح الفكرة :

الكود:
class StringBufferExample3{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.replace(1,3,"Java");  
System.out.println(sb);HJavalo  
}  
}  


المخرجات :يمكنك ملاحظة أن عملية الاستبدال تمت بعد الحرف الاول وتم استبدال عدد 3 احرف من الكلمة الاصلية #Hello بالكلمة Java
HJavalo


4_الطريقة #delete

تقوم تلك الطريقة بحذف القيمة النصية بالمخزن #StringBuffer و يمكن تحديد موضع عملية الحذف وايضا عدد ما يتم حذفة ...المثال التالى يوضح الفكرة :
الكود:
class StringBufferExample4{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.delete(1,3);  
System.out.println(sb);  
}  
}  


المخرجات :
Ho

5_ الطريقة #reverse

تقوم تلك الطريقة بعكس السلسة النصية الحالية المخزنة فى #StringBuffer ....مثال يوضح الفكرة

الكود:
class StringBufferExample5{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.reverse();  
System.out.println(sb);  
}  
}  


المخرجات :
olleH

6_ الطريقة #capacity

تقوم تلك الطريقة بارجاع سعة المخزن #StringBuffer ...مثال توضيحيى :

الكود:
class StringBufferExample6{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());  
}  
}  


المخرجات :

16
16
34

7_ الطريقة #ensureCapacity

تضمن طريقة #ensureCapacity أن السعة المحددة هي الحد الأدنى للسعة الحالية. أما إذا كان أكبر من السعة الحالية ، فإنه يزيد السعة بواسطة (oldcapacity * 2) +2. على سبيل المثال ، إذا كانت سعتك الحالية 16 ، فسوف تكون (16 * 2) + 2 = 34.

الكود:
class StringBufferExample7{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
sb.ensureCapacity(10);//now no change  
System.out.println(sb.capacity());//now 34  
sb.ensureCapacity(50);//now (34*2)+2  
System.out.println(sb.capacity());//now 70  
}  
}  


تحياتى لك
من طرف زهراء
في الخميس يناير 24, 2019 7:00 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] التعامل مع الفئة Java StringBuffer
المساهمات: 1
مشاهدة: 1364

الرجوع الى أعلى الصفحة

انتقل الى: