一、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 核心代码,大家运行一遍就会了.
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧