基础算法----判断回文
基础算法----判断回文
春哥大魔王的博客 发表于1年前
基础算法----判断回文
  • 发表于 1年前
  • 阅读 9
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

思想

我的实现比较简单就是两个指针一头一尾,对比两个值是否相等,如果题目改变:寻找最大回文,方法同样适用,修改起始索引即可;

判断是否回文字符串

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

结果

decocde

源码

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

标签: 基础算法
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 16
博文 110
码字总数 53880
×
春哥大魔王的博客
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: