Очереди и стеки

#java

#java

Вопрос:

У меня возникли проблемы с написанием программы, которая определяет, является ли строка палиндромом, которая получает входную строку от пользователя, пропуская пробелы и знаки препинания и игнорируя различия в регистре, сохраняя каждый символ как в стеке, так и в очереди. У меня уже есть определение, является ли это палиндромом. Часть, с которой у меня возникают проблемы, — это сортировка в очереди и стеке. Следующее — это то, что у меня есть прямо сейчас.

 import java.util.Scanner;

public class Pali
{

    static int length;
    static String st;
    static ListStack stack = new ListStack();
    static ListQueue lq = new ListQueue();
    static Scanner input = new Scanner(System.in);


  public static void main (String[] args)
 {
     text();
        String s = null;
     createStack(s);
        String q = null;
     createQueue(q);
  }


    public static void text()
    {

  String st, _n = "y";
  int left, right;
  Scanner scan = new Scanner (System.in);

  while (_n.equalsIgnoreCase("y")) 
  {
     System.out.println ("Enter a potential palindrome:");
     st = scan.nextLine();



     left = 0;
     right = st.length() - 1;

     while (st.charAt(left) == st.charAt(right) amp;amp; left < right)
     {
        left  ;
        right--;
     }

     System.out.println();

     if (left < right)
        System.out.println ("That string is NOT a palindrome.");
     else
        System.out.println ("That string IS a palindrome.");

     System.out.println();
     System.out.print ("Test another palindrome (y/n)? ");
     _n = scan.nextLine();
    }

    }
    public static void createStack(String s)
    {
        for (int i = 0; i < s.length(); i  )
        {
            stack.push(s.charAt(i));

    }

    }
    public static void createQueue(String q)
    {
        for (int i = 0; i < q.length(); i  )
        {
            lq.enqueue(q.charAt(i));
        }
     }

    public static void palindrome(ListQueue l, ListStack m)
    {
       for(int i = 0; i < m.size();i  )
       {


       }



   }
}
 

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

1. Что у вас есть на данный момент?

2. импортируйте java.util. Сканер; открытый класс Pali { static int length; static String st; static ListStack stack = new ListStack(); static ListQueue lq = new ListQueue(); статический ввод сканера = новый сканер (System.in ); public static void main (Строка[] аргументов) { текст(); Строкаs = null; createStack(s); Строка q = null; createQueue(q); }

3. «программа, которая определяет, является ли строка палиндромом», звучит для меня как [домашнее задание]. Пожалуйста, отметьте как таковой, если это так.

4. public static void text() { Строка st, _n = «y»; int слева, справа; Scanner scan = новый сканер (System.in ); while (_n.equalsIgnoreCase(«y»)) { System.out.println («Введите потенциальный палиндром:»); st= scan.nextLine(); слева = 0; справа = st.length() — 1;

5. пользователь1006161 разместил свой код в исходном вопросе. Не в разделе комментариев.

Ответ №1:

Вам нужно использовать стек и очередь? Или вы делаете это только потому, что кто-то вам это предложил? В вашем текущем коде вы на самом деле вообще не используете стек или очередь, вы просто создаете их и заполняете их пустыми строками.

Ваш исходный бит кода, манипулирующий строкой, не так уж плох, но попробуйте добавить шаг, который форматирует вашу строку, чтобы вы избавились от регистра, избавились от всего, что не является буквой, избавились от пробелов и т. Д. И т. Д. Заставьте этот шаг работать, затем попробуйте и проверьте, является ли это палиндромом.

И нет, я не собираюсь рассказывать вам, как это сделать, потому что мне недавно пришлось делать то же самое, и я знаю, как легко это найти…