zoukankan      html  css  js  c++  java
  • 回文算法

         回文:针对于字符串的中间位置两边对应位置相等。对于长度为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 }
  • 相关阅读:
    Linux下配置APACHE支持PHP环境
    mysql 管理脚本
    RAC迁移至单机考虑几大因素
    mysql配置文件my.cnf模板
    hadoop 日常问题汇总(持续更新)
    Redis配置文件
    jquery操作select(增加,删除,清空)
    mybatis异常
    Elasticsearch 之 query与filter区别
    在elasticsearch里如何高效的使用filter
  • 原文地址:https://www.cnblogs.com/jasenkin/p/1663968.html
Copyright © 2011-2022 走看看