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

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

栈和队列的应用举例
张同学斯基发起了问答2017-01-19
1
回复
573
浏览
 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条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!