指引网

当前位置: 主页 > 编程开发 > .NET >

回文算法

来源:网络 作者:佚名 点击: 时间:2017-11-17 03:08
[摘要] 文章标题:回文算法。.net频道提供大量的.net开发的编程教程,包括asp.net,vc.net,vb.net,c#编程等内容。致力打造高效的Dotnet技术库

  回文:针对于字符串的中间位置两边对应位置相等。对于长度为n的字符串,需要比较的次数为N/2。

  用2种方法对该应用实现算法如下:

  1:采用字符串的substring对位置为i和n-j-i的字符进行比较,如果其中一个不相等就返回flase.此方法性能会稍微差一点.

  2: 采用泛型队列和栈的特性:FIFO LIFO.此种方法性能最佳,算法复杂度O(N)。

  代码

  1 using System.Collections.Generic;

  2

  3 public partial class DataStruct_HuiWenSample : System.Web.UI.Page

  4 {

  5     protected void Page_Load(object sender, EventArgs e)

  6     {

  7       // bool bl= CheckStringRelativeEqual("ABCDEDCBA");

  8       // Response.Write(bl.ToString());

  9        bool blSQ = CheckStringRelativeEqualStackQueue("ABuDEDCBA");

  10        Response.Write(blSQ.ToString());

  11

  12     }

  13

  14

  15     private bool CheckStringRelativeEqualStackQueue(string inputString)

  16     {

  17         char[] charCompare = inputString.ToCharArray();

  18         Stack<char> stack = new Stack<char>();

  19         Queue<char> queue = new Queue<char>();

  20         bool justfy=true;

  21         try

  22         {

  23             for (int i = 0; i < inputString.Length; i++)

  24             {//压入相应的栈和队列

  25                 stack.Push(charCompare[i]);

  26                 queue.Enqueue(charCompare[i]);

  27             }

  28             for (int i = 0; i < inputString.Length; i++)

  29             {

  30                 if (stack.Pop() != queue.Dequeue())

  31                 {

  32                     justfy = false;

  33                 }

  34             }

  35         }

  36         catch

  37         {

  38             justfy = false;

  39         }

  40         finally

  41         {

  42

  43         }

  44         return justfy;

  45     }

  46

------分隔线----------------------------