回文算法
回文:针对于字符串的中间位置两边对应位置相等。对于长度为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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架