回文算法

     回文:针对于字符串的中间位置两边对应位置相等。对于长度为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 
47     private bool CheckStringRelativeEqual(string inputString)
48     {
49         //inputString.Substring();
50         //string[] charSam = inputString.
51         int j = inputString.Length;
52         bool bl = true;
53         try
54         {
55             if (j > 0)
56             {
57                 for (int i = 0; i < j / 2; i++)
58                 {
59                     if (inputString.Substring(i,1)==inputString.Substring(j-i-1,1))
60                     {//判断对应的位置字符是否相等
61                        // bl = true;
62                     }
63                     else
64                     {
65                         bl = false;
66                     }
67                 }
68             }
69         }
70         catch    
71         {
72             return false;
73         }
74         finally 
75         {
76              
77         }
78         return bl;
79     }
80 }
原文地址:https://www.cnblogs.com/jasenkin/p/1663968.html