string str = Console.ReadLine();
bool IsHui = false;
Queue<char> queue=new Queue<char>();
Stack<char> stack=new Stack<char>();
for (int i = 0; i <str.Length; i++)
{
queue.Enqueue(str[i]);
stack.Push(str[i]);
}
while (queue.Count>0)
{
if (queue.Dequeue() ==stack.Pop())
{
IsHui =true;
break;
}
}
Console.WriteLine(IsHui);
为什么我把这两句改成默认为true,就出问题了。错的字符串还是报true。有的报对有的报错
bool IsHui = true;
if (queue.Dequeue() ==stack.Pop())
{
IsHui =false;
break;
}
这个是你的逻辑问题,因为queue.Dequeue() ==stack.Pop() 只有当所有的字符都满足这个情况的时候,ishui=true是回文
如果里面只有一个字符满足这个情况,那么它不是回文,而你的逻辑判断,就是只要其中一个字符,满足了queue.Dequeue() ==stack.Pop() , 那么 ishui=true,这个逻辑是错误的