Строковый палиндром без использования встроенных функций

#java #string #palindrome

#java #строка #палиндром

Вопрос:

Я хочу создать программу для строкового палиндрома без использования встроенных функций.

Ниже приведен код, который я пробовал до сих пор :

 public class Palindrom
    {
        private static Scanner in;

        public static void main(String[] args)
        {
            String s,str1,str2;
            Scanner scan =new Scanner (System.in);
            System.out.println("Enter the string");
            String s = in.nextLine();
            StringBuffer str1 = new StringBuffer();
            StringBuffer str2 = new StringBuffer();
            str1.reverse();
            System.out.println("orignal string=" str2);
            System.out.println("reveser string=" str1);
             if(String.valueOf(str1).compareTo(String.valueOf(str2))==0)

                System.out.println("palindrom");

             else
                 System.out.println("not palindrom");
        }
    }
  

Эта программа не работает должным образом.Я думаю, что проблема в in.nextLine и строковом буфере.

Комментарии:

1. Пожалуйста, прочитайте всплывающие окна с полезными тегами, прежде чем размещать их в своем сообщении! Этот вопрос не имеет ничего общего с Swing!

2. Пожалуйста, используйте форматирование кода для кода и фрагментов кода, структурированных документов, таких как HTML / XML или ввод / вывод. Для этого выделите текст и нажмите {} кнопку в верхней части формы публикации / редактирования сообщения.

3. Добавьте еще немного описания. Похоже, вы хотите проверить, является ли строка палиндромом. Я вижу несколько проблем: String s больше не используется. Также, если вы говорите «без использования встроенных функций», тогда почему вы используете StringBuffer.reverse() .

4. просто для информации, в java они называют это методом, а не функцией

5. По крайней мере, вы пробовали что-нибудь (без встроенных методов)??

Ответ №1:

Приведенный ниже самый простой способ проверить, является ли введенная здесь строка кода enteredenter палиндромом.

 import java.util.Scanner;
public class Strng {
    public static void main(String[] args) {
    String r = ""; //To store the reverse
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the String");
    String s = sc.next(); // Entering the string

    for(int i= s.length() - 1;i>=0;i--) {
        r = r   s.charAt(i);
    }

    if(r.equals(s)) {
        System.out.println("Is a palindrome");
    }
    else {
        System.out.println("Not a palindrome");
    }
    }
  

}

Ответ №2:

 public static void palindrome(String str){
        Map<Character,Integer> myMap = new HashMap<Character, Integer>();
        int characterCounter = 1;
        int index=-1;
        for(char ch : str.toCharArray()){
            index  ;
            if(str.length()%2!=0 amp;amp; index==Math.abs(str.length()/2)) continue;
            if(myMap.containsKey(ch))
                characterCounter = myMap.get(ch) 1;
            myMap.put(ch, characterCounter);
        }
        boolean flag = true;
        for(Character myMApVal: myMap.keySet()){
            if(myMap.get(myMApVal)%2!=0){
                flag=false;
                break;
            }               
        }
        if(!flag) System.out.println(str " is not palindrome");
        else System.out.println(str " is palindrome");      
}       
  

Ответ №3:

 package practice;

import java.util.Scanner;

public class String_Palindrome {
    public static void main(String[] args) {
//String s, str1, str2;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter the string:");
        String s = scanner.nextLine();
        StringBuffer str1 = new StringBuffer(s);
        StringBuffer str2 = new StringBuffer(s);
        str1.reverse();
        //System.out.println("Original String is:"   str2);
        //System.out.println("Reverse String is:"   str1);
        if (String.valueOf(str1).compareTo(String.valueOf(str2)) == 0)
            System.out.println("Given String is a palindrome");
        else
            System.out.println("Given String is Not a palindrome");
    }
}
  

Ответ №4:

Приведенный ниже код — это самый простой способ проверить, является ли строка палиндромом.

 public class pal {
    static String palindrome(String str) {
        char[] array = str.toCharArray();
        for (int i = 0; i < array.length / 2; i  ) {
            if (array[i] != array[array.length - i - 1]) {
                return "not a palindrome ";
            }
        }
        return "palindrome ";
    }
    public static void main(String args[]) {
        System.out.println(palindrome("11211"));
    }
}
  

Ответ №5:

     import java.util.Scanner;

    public class Palindrom {

        static Scanner scanner = new Scanner(System.in);

        public static void main(String[] args) {

            System.out.println("Enter the string");
            String inputStr =scanner.next();
            System.out.println("Given String = " inputStr);
            char [] charArray=inputStr.toCharArray();
            int strlength=(charArray.length)-1;
            boolean isPalindrom=true;

            for(int count=0; count<charArray.length amp;amp; strlength >= 0; count  ,strlength--){
                if(charArray[count]!=charArray[strlength]){
                    isPalindrom=false;
                    break;
                }      
            }

            if(isPalindrom){
                System.out.println("palindrom");
            }else{
                System.out.println("not palindrom");
            }

        }
    }
  

Объяснение :

  1. Заданная строка для преобразования массива символов.
  2. Возьмите две точки

    1-е начало строки a[0]

    2-й конец строки a[длина-1]

  3. Сравните каждый символ в массиве символов

    Сравните начало с концом и начало конца во время цикла.

Случай палиндрома 1: (длина нечетная)

«мадам» — это палиндром:

a[0] == a[4] m

a[1] == a[3] a

a[2] == a[2] d

a[3] == a[1] a

a[4] == a[0] m

Случай палиндрома 2: (длина четная)

«малаялам» — это палиндром:

a[0] == a[8] m

a[1] == a[7] a

a[2] == a[6] l

a[3] == a[5] a

a[4] == a[4] y

a[5] == a[3] a

a[6] == a[2] l

a[7] == a[1] a

a[8] == a[0] m

Не случай палиндрома 3: не совпадает во всех символах (от начала до конца и от начала до конца).

Комментарии:

1. Не могли бы вы объяснить свой ответ вместо того, чтобы просто сбрасывать код?

Ответ №6:

 import java.util.Scanner;

public class StringPalindrome {

public static void main(String[] args) {
    Scanner sc = null;
    String str1 = null;
    // create object for scanner class
    sc = new Scanner(System.in);
    if (sc != null) {
        System.out.println("Enter First String");
        str1 = sc.nextLine();
    }
    strPalindrom(str1);
}// main

static void strPalindrom(String str) {
    // converting string into array
    char ch[] = str.toCharArray();
    // check string is Palindrom or not
    int count = ch.length - 1;
    for (int i = 0; i < ch.length; i  , count--) {
        if (ch[i] != ch[count]) {
            System.out.println("String is not Palindrom");
            break;
        } else {
            if (i == count) {
                System.out.println("String is Palindrom");
            }
        }
    } // for
}// strPalindrom method
}// class
  

Комментарии:

1. Хотя предоставление кода — это нормально, вы также должны предоставить описание того, что делает ваш код, и почему вы выбрали это решение. Таким образом, другие могут понять ваши мыслительные процессы, используемые при создании вашего ответа.

Ответ №7:

Я видел выше всю программу, но она немного сложна, не понятна новичкам.

Очень простая программа для начинающих (для проверки строкового палиндрома)

 public class Palindrome{
public static void main(String[] args) {
    String s = "malayalam"; // enter here your requred String to check Palindrom
    String rev = "";
    for (int i = s.length() - 1; i >= 0; i--) {
        rev = rev   s.charAt(i);
    }
    if (rev.equals(s)) {
        System.out.println("Palindrom");
    } else {
        System.out.println("Not Palindrom");
    }
  }

}
  

Ответ №8:

 import java.util.*;
class Test{

    public static void main(String... as){
        int check=0;
        Scanner s= new Scanner(System.in);
        String str = s.nextLine();
        int l=str.length();
        for (int i=0;i<l;i  ){
            if(str.charAt(i)!=str.charAt(l-1-i))
                check  ;
        }
        if(check==0)
            System.out.println("yes it's palindrome");
        else
            System.out.println("no it's not.");

}
}
  

Комментарии:

1. Это короткий и лучший метод.

Ответ №9:

 public class Palindrom {

        public static void main(String[] args) {

        String str= "dad";
        char[] rev=str.toCharArray();
        int i=0;
        int j= rev.length-1;
        while(i<j){
            char temp =rev[i];
            rev[i] = rev[j];
            rev[j] = temp;
            i  ;
            j--;
        }
        System.out.println(rev);
        System.out.println();
        if(str.equals(String.valueOf(rev))){
            System.out.println("Yes! It is palindrom");
        }else{
            System.out.println("No! It is not palindrom");
        }
    }

}
  

Комментарии:

1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, повышает его долгосрочную ценность.