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