Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
栈和队列的应用举例
张同学斯基发起了问答2017-01-19
1
回复
454
浏览
 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;
                }

所有回复
  • siki 2017-01-20

    这个是你的逻辑问题,因为queue.Dequeue() ==stack.Pop() 只有当所有的字符都满足这个情况的时候,ishui=true是回文

    如果里面只有一个字符满足这个情况,那么它不是回文,而你的逻辑判断,就是只要其中一个字符,满足了queue.Dequeue() ==stack.Pop() ,  那么 ishui=true,这个逻辑是错误的

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!