我在编写程序时遇到问题,该程序确定字符串是否是一个从用户获取输入字符串的回文,同时跳过空白字符和标点符号,并忽略大小写中的差异,将每个字符存储在堆栈和队列中。我已经确定它是否是回文。我遇到麻烦的部分是在队列和堆栈中对它进行排序。以下就是我现在所拥有的。
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) && 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++)
{
}
}
}
答案 0 :(得分:0)
您需要使用堆栈和队列吗?或者你只是这样做,因为有人建议你? 在你当前的代码中,你实际上根本没有使用堆栈或队列,你只是制作它们并用空字符串填充它们。
你的原始代码位操纵字符串并不是那么糟糕,但是尝试添加一个格式化字符串的步骤,所以你摆脱了大小写,摆脱其他任何不是字母的东西,摆脱白色空间等让这一步工作,然后尝试检查它是否是回文。
不,我不会告诉你该怎么做,因为我最近不得不做同样的事情,我知道找到它是多么容易......