• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C#利用堆栈进行回文检测

OC/C/C++ 水墨上仙 1501次浏览

回文:称正读和反读都相同的字符序列为“回文”,如“abba”、“abccba”、12321、123321是“回文”,“abcde”和“ababab”则不是“回文”。

// ------------------算法二:利用栈先进后出,队列先进先出的特点----------------
//abba
Console.WriteLine("算法2:请输入一个字符串!");
//调用.net里面自带的Queue,Stack,并初始化
Queue<char> queue = new Queue<char>();
Stack<char> stack = new Stack<char>();
string str2 = Console.ReadLine(); //获取输入字符
for (int i = 0; i < str2.Length; ++i) //放入栈和队列
{
  queue.Enqueue(str2[i]);
  stack.Push(str2[i]);
}
IsHuiWen(queue, stack);
//检验函数,只需要检验1/2的位置,因为只需要检测前半部分和后半部分是否相同。
static void IsHuiWen(Queue<char> queue, Stack<char> stack)
{//aabb /abbaa
//abcd
// abbba
  int i = 0, total = 0;
  bool isHuiWen = true;
//确定所要取出的字数,分奇数偶数两种情况
  if (queue.Count % 2 == 0)
  total = queue.Count / 2;
  else
  total = queue.Count / 2 + 1;
//通过循环比对出栈元素和出队元素是否相同
  while (queue.Count != 0 && stack.Count != 0)
  {
    if (queue.Dequeue() != stack.Pop()) //不相等
    {
    isHuiWen = false;
    break;
    }
    else if (i == total) //检查到一半时,跳出循环
      break;
    ++i;
  }
if (!isHuiWen)
  Console.WriteLine("这不是回文");
else
  Console.WriteLine("这是回文");
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C#利用堆栈进行回文检测
喜欢 (0)
加载中……