Manacher(回文)检查算法

一、Manacher(回文)检查算法原理与实现

什么是回文? 我们中文理解的字面意思就是能回来的文字,比如:“我为人人,人人为我”,不管你是正着念,还是反着念,都是一样的嘛,前段时间,著名影星“陈思诚”,约几名女模,被拍之后,他发誓说“我要是出轨,我名字倒着念”,人家话都说到这份上了,其实我是很相信他为人的,也相信他和她们确实打牌一晚上,什么都木有干。

回文其实很简单!为了让大家简单理解算法,我就用1-3表示。
待回文数据 A = ” 1 2 3″

回文后数据 B= “3 2 1”

然后验证A 和B是否相等,如果相等就说明是回文语句,上面明显A不是回文语句,因为A!=B,那么如何将A转换成B呢。大家应该学过C语言中取余求商吧。(“%”,“/”)

程序分析,因为有三个数,所以程序会走三趟。

第一趟:取出A中的 “3” 赋值给 B.完成之后,A = “1 2” B=“3”

第二趟:取出A中的“2” 赋值给 B.完成之后,A = “1” B=“3 2”

第三趟:取出A中的“1” 赋值给 B.完成之后,A = “” B=“3 2 1” (真实情况A=0);

是不是看完上面,感觉so easy! ,libero给出源码,大家好好赏析一下。

二、Manacher(回文)检查算法源码

#include <stdio.h>

int main(int argc, char *argv[])
{
    
    int t1=0, t2=1, display=0, num;
    printf("Enter an integer: ");
    scanf("%d",&num);
    printf("Fibonacci Series: %d+%d", t1, t2);
    display=t1+t2;
    while(display<num)
    {
        printf("+%d",display);
        t1=t2;
        t2=display;
        display=t1+t2;
    }
    
    return 0;
}

三、Manacher(回文)检查算法总结

//核心算法部分,完成数据倒叙。
       ret = num%10;
       result = result*10 + ret;
       num = num /10 ;

这个程序,可能稍微重点就是如何将 A 倒叙成 B 核心代码,大家运行一遍就会了.

您可能还喜欢...

想说点什么吗?

您将是第一位评论人!

提醒
avatar