栈是一种先进后出的数据结构,队列是先进先出的结构。对于测试一个字符串是否是回文的问题,其实也就是判断一个字符串两边是否对称的问题。最常见的做法也就是把这个作为一个数组考虑,判断array[i]是否等于array[length-i-1]. 当然是可以得到结果的。但是我考虑用栈和队列来解决这个问题,利用它们的特性。

由于我使用的是.net里面自带的Queue,Stack,他们都是泛型类型,初始化:

1
2
3
4
5
6
7
8
9
10
Queue<char> queue = new Queue<char>();
Stack<char> stack = new Stack<char>();
 
string str = Console.ReadLine(); //获取输入字符
 
for (int i = 0; i < str.Length; ++i)  //放入栈和队列
{
      queue.Enqueue(str[i]);
      stack.Push(str[i]);
}

检验函数,只需要检验1/2的位置,因为只需要检测前半部分和后半部分是否相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
static void IsHuiString(Queue<char> queue, Stack<char> stack)
{
      int i = 0,total=0;
      bool isHui = 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())    //不相等
       {
               isHui = false;
               break;
          }
          else if (i == total)   //已经检查了一半
          break;
          ++i;
     }
 
     if(!isHui)
         Console.WriteLine("This is not Hui Word!");
     else
         Console.WriteLine("This is Hui Word!");
}

调用函数:

1
IsHuiString(queue, stack);

 

结束!

posted @ 2010-08-18 16:08 Nick Song 阅读(8134) 评论(0) 推荐(0) 编辑
摘要: 已经学习了一些基本的概念,今天主要学习Button以及其他控件。1. ButtonButton继承自ButtonBase,ButtonBase继承自ContentControl. ContentControl继承自Content.可以得知Button和Window一样具有相同的属性Content.因为Window也是继承自ContentControl,Content。 那么可以设置给window的... 阅读全文
posted @ 2010-08-11 15:37 Nick Song 阅读(609) 评论(3) 推荐(1) 编辑
摘要: 第一章1、数据(Data) 数据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。2、数据元素(Data Element)和数据项(Data Item) 数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。数据元素有时也被称为... 阅读全文
posted @ 2010-08-10 15:35 Nick Song 阅读(2303) 评论(2) 推荐(1) 编辑
摘要: 第四篇简单学习WPF中关于Content的概念。Content就是所要显示的内容,是用户能过接触到最直接的部分。你可以将Content设置为字符串,可以设置为位图,可以设置为矢量图。我们知道在WPF的世界里面都是矢量的…但是有一点需要注意的是,你只能设置一个东西给Content属性。 Content继承自ContentControl,ContentControl继承自Control。... 阅读全文
posted @ 2010-08-10 14:42 Nick Song 阅读(3232) 评论(0) 推荐(0) 编辑
摘要: 上两篇对WPF有了一个简单的入门,开始来学习基本的知识,这篇我和大家一起学习WPF基本画刷:BrushWPF一共提供了6种画刷:1. SolidColorBrush纯色画刷,只是单一的一种颜色, 值是Color,可以调用Colors进行枚举或者使用Color.FromArgb()或者Color.FromRgb()。 A,R,G,B是颜色的4个属性。A代表透明度,RGB 代表三原色:红,绿,蓝。 B... 阅读全文
posted @ 2010-08-09 16:25 Nick Song 阅读(916) 评论(0) 推荐(0) 编辑
摘要: 上一篇中完成了一个简单的程序,在这篇读书笔记中主要是共同了解下应该知道的Application以及Window的部分属性。每个WPF应用程序只能包含一个Application的实例,调用Run方法启动Application.Application 提供了一些实用的属性和方法。Current: 获取 Domain 中默认的 Application 实例。MainWindow: 获取主窗口实例。Win... 阅读全文
posted @ 2010-08-05 15:40 Nick Song 阅读(709) 评论(0) 推荐(0) 编辑
摘要: 从头到尾的看完了这本书,学习到很多,由于接触WPF 的时间有点晚,其实早就已经接触了只是没有系统的学习和了解。工作之余学习Petzold的这本书《Applications=Code+Markup》. 对于WPF的了解和提供非常有帮助。书中有很多例子,都一一的动手做了,有些地方非常的巧妙,作为学习者,非常有必要记录下学习的过程以及在学习中吸取到的知识,也希望在这里和大家一起交流,更希望学习到更多,因... 阅读全文
posted @ 2010-08-03 15:55 Nick Song 阅读(645) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示