回文构词法之路!!

Problem Description:
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等
下面介绍一种复杂度只有O(n)的Manacher算法:
首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。 为了进一步减少编码的复杂度,可以在字符串的开始加入另一个特殊字符,这样就不用特殊处理越界问题,比如$#a#b#a#。
下面以字符串为例,经过上一步,变成了 S[] = &$#1#2#2#1#2#3#2#1#&;
然后用一个数组 P[i] 来记录以字符S[i]为中心的最长回文子串向左/右扩张的长度(包括S[i]),比如S和P的对应关系:
可以看出,P[i]-1正好是原字符串中回文串的总长度,可证明。
那么怎么计算P[i]呢?该算法增加两个辅助变量id和mx,其中id表示最大回文子串中心的位置,mx则为id+P[id],表示在i之前的回文串中延伸至最右端的位置也就是最大回文子串的边界。
for(int i = 1; i & ++i)
if(mx & i)
P[i] = MIN(P[id*2-i] , mx-i);
while(S[i+P[i]] == S[i-P[i]])
++P[i];
if(i + P[i] & mx)
mx = i + P[i];
算法的关键点在这里:如果mx&i,那么P[i] &= MIN(P[2*id-i], mx-i)。
int longestPalindromic(string str)
int strsz = str.size();
if(strsz&=1)
int len = strsz*2+2;
int* s = new int[len+1];
for(int i=1,j=0; j& j++)
s[i++] = '#';
s[i++] = str[j];
s[len-1]='#';
s[len]='\0';
int id = 0;
int mx = 0;
int longestnum = 1;
int longestid = 0;
int* p = new int[len];
for(int i=1; i& i++)
p[i]=min(p[id*2-i],mx-i);
while(s[i+p[i]] == s[i-p[i]])
p[i]++;
if(p[i]+i&mx)
mx=p[i]+i;
if(p[i]&longestnum)
longestnum=p[i];
longestid =
cout&&&Longest Palindromic Num:&&&longestnum-1&&
cout&&str.substr((longestid-1)&&1-(longestnum-1)&&1,longestnum-1)&&
return longestnum-1;
其实这题也可以用后缀数组来做,但是后缀数组的复杂度太高:翻转拼接(O(n)),排序(O(nlogn)),找最长的串(O(2n*len)),找的时候还要注意一个相邻的两个串一个有#一个没有#。
参考文章:
http://blog.csdn.net/ggggiqnypgjg/article/details/6645824
//a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:316332次
积分:5299
积分:5299
排名:第1521名
原创:217篇
转载:21篇
评论:258条
(14)(8)(82)(79)(9)(8)(4)(15)(10)(3)(1)(2)(3)帮忙把“一路平安”翻译成回文,不要音译,写出来就行。做设计急用。谢谢。
帮忙把“一路平安”翻译成回文,不要音译,写出来就行。做设计急用。谢谢。
不区分大小写匿名
???? ?????
谢谢谢谢。确定是对的吗?这个出错了我后果很严重的。。
等待您来回答
外语领域专家【USACO】双重回文数
ID:siga4ev2
PROG:dualpal
LANG:PASCAL
const f:array[0..9]of
char=('0','1','2','3','4','5','6','7','8','9');
var i,j,k,m,n,s:
& function&
check(i:longint):
& var j,k,l,kk,base:&
&&& for base:=2
to 10& do begin
a:='';& dd:= j:=i;
while j&&0 do begin
a:=a+f[k];
k:=length(a);
for l:=1 to k div 2 do
if a[l]&&a[k-l+1] then
if dd then inc(kk);
if kk&=2 then& exit(true);
exit(false);
& assign(input,'dualpal.in');reset(input);
assign(output,'dualpal.out');rewrite(output);
& readln(n,m);
& while s&n do begin
&&& if check(m)
then begin inc(s);writeln(m);
& close(input);
& close(output);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
在日复一日的平淡里,记录或可回忆的点滴。不管别人对我的文字评价如何,我只写我的。因为,这是送给自己年老时,最好的礼物。
LOFTER精选
图片来自网络新韵回文诗 & &七绝·鸳鸯对月戏荷边 &鱼两三·心路行者鸳鸯对月戏荷边,月戏荷边鱼两三。三两鱼边荷戏月,边荷戏月对鸯鸳。& & & & & & &十个字颠来倒去组成一首七绝,有意思,你也试试?&
阅读(249)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
id:'fks_',
blogTitle:'【原创】回文诗',
blogAbstract:'图片来自网络新韵回文诗 & &七绝·鸳鸯对月戏荷边 &鱼两三·心路行者',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:1,
publishTime:5,
permalink:'blog/static/',
commentCount:108,
mainCommentCount:66,
recommendCount:6,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'在日复一日的平淡里,记录或可回忆的点滴。不管别人对我的文字评价如何,我只写我的。因为,这是送给自己年老时,最好的礼物。',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}“锦绣襄邑”与“丝绸之路”--商丘新闻网多媒体数字报刊平台
第07版:文化商丘
“锦绣襄邑”与“丝绸之路”
文/晚报记者 班琳丽
通讯员 黄业波 图/资料图片&&&&来源:商丘新闻网—京九晚报
&&[阅读提示]
&&襄邑,即今河南商丘的睢县。襄邑为东汉地名,古属兖州陈留郡。当初黄河流域温暖湿润,非常利于桑树生长,这为当时襄邑丝织业的极度繁荣提供了极其适宜的自然条件。
&&沧海桑田多变幻。丝绸作为古中国呈递给世界的三大名片之一,在盛唐时曾一度引发西方对东方的神往和膜拜。因此,“丝绸之路”当之无愧地成为东西方文化和经济等互通有无的华丽“纽带”。而在这条久远、神秘的商道上,曾经见证和记录过凝聚着襄邑人勤劳和智慧的“锦绣襄邑”。
&&《魏都赋》盛赞“锦绣襄邑”
&&我国养蚕业早在6000年前就有了。在4000年前,不仅能养蚕,还能缫丝,并能织出最原始的帛。到了商代,作为手工业的蚕丝业已相当发达,不仅在织帛技术上有很大改进,品种也增加很多,丝织品此时得以高度发展。前些年长沙出土的锦缎,可证明当时的织品精良。而襄邑所产的美锦,到春秋战国时期已驰名远近,且在工艺上达到了很高的成就。
&&古时中国的九州中,六个州拥有大量的蚕织业,其中豫州、青州、兖州的蚕织业最为发达。豫州主要是襄邑、陈留,兖州是临淄,周边还包括今河北、山西、陕西等部分地区,共同成就了当时中原繁荣、鼎盛的蚕桑丝织业,使中原一举成为当时中国乃至世界的丝织业中心。那时中原的丝织品产量很大,质地优良,畅销外地,远近闻名。因此,当时的丝织品贸易活动十分活跃,各生产者之间通过交易,以满足不同需求。
&&据史书记载,汉代的长安设有东西织室,由织室令主管。许慎《说文解字》中“锦”字,就是“襄邑织文也”。可见汉代的锦,在襄邑出产之富。而随着中原丝织业的蓬勃发展,我国丝织品不但能供给国内皇宫和贵族的需要,而且开始寻求外销渠道,大量向外输出。近如朝鲜等,远如通过甘肃、新疆,越过葱岭,从众所周知的“丝绸之路”输往西亚和欧洲诸国。从西汉到隋唐的1000多年中,中国人民和世界各国人民,经过“丝绸之路”进行了广泛的经济和文化交流,使我国与亚、非、欧各国建立了深厚的历史友谊,这是我国人民对世界各国人民的卓越贡献。我国的丝织业不仅在花色品种上闻名遐迩,而且在技术上向“刺绣”、“织花机”和“丝绸印刷”方面发展,这是丝织业的又一大进步。据史书记载,东汉明帝率领大臣祭天地,穿的都是五彩花纹的服装,这是陈留郡襄邑献给皇帝的贡品。可见当时的丝绸刺绣已有织花机了。魏明帝时冯钧又改良了织绫机,既省工省时,又增加了很多花色品种。
&&当年襄邑的锦织品往往是先运往长安,然后再踏上“丝绸之路”,产品销往中亚、西亚、欧洲各国。所以,襄邑早在2000多年前就是一个贸易出口县邑了。唐代时,中原的锦织品获得了最辉煌的发展,品种更丰富,质地更精良,花色更艳丽,产品数量大增,并与朝鲜、日本也有了贸易往来。西晋时辞赋作家左思,历经十载创作了令“洛阳纸贵”的《 三都赋 》,其中的《魏都赋》里,提到北方名产有“锦绣襄邑,罗绮朝歌,绵纩房子,缣总清河”。
&&睢县北湖西北有一濯锦池,至今濯锦池遗迹尚存。两汉时期,因襄邑县丝织业特别发达,朝廷在此专设“服官”官署,该官署就是管理织造宫廷服饰的机构,为皇帝、王公、妃嫔、大臣织造服装。如今到此凭吊,可以透过历史的层层烟霭,想象到当年这里商贾云集,宝马奋蹄,把一匹匹襄锦运到长安,销往西域,为我国丝绸之路增光添彩的壮观景象。
&&《璇玑图》反映当年锦绣盛况
&&中国文苑有一朵奇葩——回文诗词,是封建社会里妇女的苦心孤诣之作,首创于妇女,又完备于妇女。朱存孝《回文类聚序》云:“自苏伯玉妻《盘中诗》为肇端,窦滔妻作《璇玑图》而大备。”《璇玑图》以奇巧多变、文采斐然著称,为东晋十六国时期前秦女子苏蕙的织锦作品。历代都是从回文诗的角度来推崇苏蕙的,实际上,就中国工艺美术史而言,苏蕙称得上是最早见诸文献记载的织锦女工艺家,她的回文织锦《璇玑图》则是非常珍贵的史料。而据史书记载,苏蕙是陈留令苏道质第三女,随父在陈留襄邑住过,可推想其在织锦之乡必学得一手织锦之艺。
&&据《晋书》记载:窦滔妻苏氏,名蕙,字若兰,始平(今陕西兴平)人,善属文。她的丈夫窦滔为前秦宣昭帝时秦州(今甘肃天水)刺史,后被徙流沙(今甘肃敦煌)。苏蕙思夫心切,于是织回文《璇玑图》相赠,该图共841字。
&&古今论《璇玑图》者甚多,而以唐代武则天记叙较详,影响较大。武则天当权执政后,于“听政之暇,留心坟典,散帙之次,偶见斯图,因述若兰之才,复美连波之悔过”,于是撰有《窦滔妻苏氏织锦回文记》。按武则天的说法,苏蕙“识知精明,仪容秀丽,谦默自守,不求显扬”,长到16岁时,嫁给秦州刺史窦滔,深得丈夫的敬重。窦滔,字连波,精通经史,能文善武,颇有口碑。迁任秦州刺史时,因忤旨谪戍敦煌。后因攻下晋之襄阳,便镇守襄阳。当时,窦滔有宠姬赵阳台,能歌善舞。后来窦滔撇下妻子苏蕙,带赵阳台到襄阳赴任,一去不返。当年苏蕙才21岁,独守空房,悔恨自伤。于是,绞尽脑汁,织出回文诗《璇玑图》,差人送给窦滔。窦滔览阅锦诗,感其妙绝,于是翻然醒悟,将赵阳台送到关中,又派车去接苏蕙到襄阳,从此夫妻重归于好。
&&《璇玑图》到底是什么样子的呢?锦,正如《六书故》云:“织采为文曰锦。”汉代锦之产地以陈留襄邑为第一,自汉代起该地以产锦而驰名。王充《论衡·程材篇》云:“齐郡世刺绣,襄邑俗织锦。”她用五色丝线,织成八寸见方的锦,并用文字织成回文诗于锦上,故武则天这么评价道:“五采相宜,莹心耀目。其锦八寸见方,题诗二百余首,计八百余言,纵横反复,皆成章句。其文点画无缺,才情之妙,超今迈古,名曰《璇玑图》。”《璇玑图》“点画无缺”,又“五采相宜,莹心耀目”,论其技艺,千古一绝,这确实是一个了不起的创举。日本学者原田淑人在《中国服装史研究》中论及唐代服装时引此资料后这么说:“回文铭据传系前秦宣昭帝时秦州刺史窦滔妻苏氏织锦,绣成七言回文诗。回文铭盖自此始,后来成为六朝隋唐相继流行的文样。”这正反映出苏蕙所创的回文织锦工艺对后世的巨大影响。
&&传承历史方是发展的契机
&&古代丝织故乡襄邑的历史渊源,是今天发展纺织业及承接南方纺织产业转移的最有力的历史传承依据。可以说,襄邑丝织无愧于中华丝织的本源和发祥地,在承接南方纺织产业转移、迎接纺织产业回归故里和溯根求源上,具有得天独厚的优势。
&&中国的丝织品一直被世界公认为最华贵的服饰材料,是人类文化艺术的珍品与杰作,至今仍保持着独特而持久的魅力,为世界各国人民所神往和赞颂。古时的襄邑,今朝的睢县,作为全世界桑蚕丝织业的发祥地和故乡之一,对中国的文明和历史进步有着深远的意义,对全人类经济与文明的进步也同样作出了不朽贡献。
&&襄邑的历史悠久,她的文化就像开封地下古城一样,被一层层地叠在一起,凝固成一种历史年轮,积淀为一种文化矿产。文化在被多年埋没之后,让人无法辨认哪一层更有价值,哪个部位更加闪光。然而,古代襄邑的鼎盛与繁华,那么持久,那么耀眼,定会成为今天的睢县发展经济、走向未来的绝妙契机。
&&《璇玑图》单就织锦工艺来说,是中国织锦史上第一次用文字织成的锦,一反过去织花纹图案的常规。841个字织在八寸见方的锦上,用文字织成回文诗。
&&此图共841个字,无论反读,横读,斜读,交互读,退一字读,迭一字读,均可成诗。可以读成三言、四言、五言、六言、七言诗1000多首,才情实在妙极。
&&织者的悲欢忧乐,忠愤感激,好贤厌恶,跃然纸上。
&&《璇玑图》的意蕴与奥妙,只有用心品味,才能渐入佳境。它是中国文字深奥、古奇、优美与艺术化的最佳诠释。
对此文章发表评论
您对这篇文章的满意度}

我要回帖

更多关于 回文构词法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信