基礎算法----判斷迴文

思想

個人實現比較簡單就是兩個指針一頭一尾,對比兩個值是否相等,若是題目改變:尋找最大回文,方法一樣適用,修改起始索引便可;git

判斷是否迴文字符串

string huiwen = "abcdcba";

#region 判斷迴文
static void checkHuiWen(string str)
{
    bool result = true;
    char[] arr = str.ToArray();
            /**
            * 迴文對比中心索引兩邊值,依次作比較;
            * */
    int index = arr.Length - 1 / 2;
    int end = arr.Length - 1;
    for (int i = 0; i < index; i++)
    {
        if (arr[i] != arr[end - i])
        {
            result = false;
            break;
         }
    }
    if (result)
        System.Console.Write("say yes");
    else
        System.Console.Write("say no");
}
#endregion

輸出

say yes;數組

尋找最大回文字符串

string huiwen = "abcdedcocde";

#region 最大回文字符串
static void maxHuiWenString(string str)
{
     char[] arr = str.ToArray();
     string tempStr = "";
     string result = "";
            /**
            * 以數組每一個數字爲中心,先後比較,若是前值等於後值則記錄;
            * 循環體結束以後,進行多個迴文比較,長度最大的保留;
            * */
    for (int i = 0; i < arr.Length; i++)
     {
           for (int j = 1; j <= i; j++)
            {
                if ((i - j) > 0 && (i + j) < arr.Length && arr[i - j] == arr[i + j])
                {
                    if (tempStr == "")
                        tempStr = arr[i].ToString();
                    tempStr = arr[i - j] + tempStr + arr[i + j];
                }
                else
                    break;
            }
            if (tempStr.Length >= result.Length)
            {
                result = tempStr;
                tempStr = "";
            }
        }
        System.Console.WriteLine(result);
    }
#endregion

結果

decocdeui

源碼

http://git.oschina.net/aspnet/Suan-Fa.net

相關文章
相關標籤/搜索