回文:针对于字符串的中间位置两边对应位置相等。对于长度为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 }
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 }