查找字符串中最长的回文
2010年10月15日
通过本次研究,获得了四分和七年的地面工作者 一个拥有自由的概念,并对提议进行治疗 只要所有人都被创造成平等的人 t测试是否有午睡或运动的概念和药物 长期以来,我们都在为战争而战 将该字段的一部分作为最终测试位置 这里有谁的生活与国家的生活息息相关 以太坊和我们应该做的事情 我们不能奉献我们不能放弃这片土地 挣扎着的埃尔曼生前和死后都已奉献给了他们 我们贫穷的前进道路或减损世界的财富 记住了我们在这里说的话,但频道忘记了我在这里说了什么 tis用于将其专用于未完工工程 谁在这里有这样的进步 对于之前已被遗传到离境的婴儿 从这些应得的加薪中,我们增加了对wh的加薪 ichthey保存了我们高度重视的进化的最后一个完整测量值 解决这些死亡不应在这个国家的任何情况下死亡 上帝将享有自由和人民政府 先于其他人的人不会从地球上消失
29对“查找字符串中最长的回文”的回应
-
2010年10月15日上午11:19 有人可以删除我之前的评论吗? 我尝试了天真的方式。 我对回文了解不多。 哎呀,我的纸盒没出现。 我的解决方案 -
2010年10月15日12:17 PM […]今天的编程实践练习,我们的目标是写一个算法来找到[…]中最长的回文 -
2010年10月15日下午2:30 我的Python解决方案: -
2010年10月15日晚上8:33 几天前我也参加了格列普林挑战赛。 这里是 我对问题1的解决方案。 在最坏的情况下是O(n**2) 但是对于典型的输入数据来说,更接近于O(n)。 -
2010年10月15日晚上9:47 此文件包含双向Unicode文本,其解释或编译可能与下面显示的不同。 要查看,请在显示隐藏Unicode字符的编辑器中打开该文件。 了解有关双向Unicode字符的更多信息 显示隐藏字符 #!/ usr/bin/env-ruby ##查找字符串中最长的回文 ##2010年10月15日 ## ## https://programmingpraxis.com/2010/10/15/find-the-longest-parlindrome-in-a-string/ ## ##格雷普林最近发布了一项编程挑战,要求程序员 ##解决三个问题; 完成后,格雷普林向 ##给他们寄一份简历。 第一个问题要求程序员找到 ##以下1169个字符字符串中最长的回文: ## ##四分零五年前,我们通过了一项新的研究 ##自由概念中的一个国家并致力于此 ##只要所有人都被创造成平等的人 ##确定呼吸暂停或呼吸暂停是一次性的还是一次性的 ##ated can longendure Weareqmeto再次与沙特瓦尔作战 ##该领域的平均医疗比例为最终检测位置 ##无论是谁给了他们国家可能活着的生命 ##以太坊和我们应该做的事情 ##我们不能奉献我们不能放弃这片土地 ##挣扎着的埃尔曼生前和死后都已奉献给了他们 ##我们贫穷的前进道路或减损世界的财富 ##记住了我们在这里说的话,但频道忘记了我在这里说了什么 ##tis用于将其专用于未完工工程 ##谁在这里有这样的进步 ##对于之前已被遗传到离境的婴儿 ##从这些应得的加薪中,我们增加了对wh的加薪 ##ichthey保存了我们高度重视的进化的最后一个完整测量值 ##解决这些死亡不应在这个国家的任何情况下死亡 ##上帝将享有自由和人民政府 ##先于其他人的人不会从地球上消失 ## ##您的任务是编写一个函数,在 ##字符串并将其应用于上述字符串。 def longest_palindrome_in(字符串) 回文=“” 0.最多字符串长度do|outer| string.length.downto外部+1 do|内部| forward=string.slice(外部..内部) 如果forward.length>回文.length&&forward.eql? (向前、向后) 回文=向前 结束 结束 结束 回文 结束 字符串=DATA.read.gsub“\n”,“” 字符串小写! 将最长的parindrome_in字符串放入 __完__ 通过本次研究,获得了四分和七年的地面工作者 一个拥有自由的概念,并对提议进行治疗 只要所有人都被创造成平等的人 t测试是否有午睡或运动的概念和药物 长期以来,我们都在为战争而战 将该字段的一部分作为最终测试位置 这里有谁的生活与国家的生活息息相关 以太坊和我们应该做的事情 我们不能奉献我们不能放弃这片土地 挣扎着的埃尔曼生前和死后都已奉献给了他们 我们贫穷的前进道路或减损世界的财富 记住了我们在这里说的话,但频道忘记了我在这里说了什么 tis用于将其专用于未完工工程 谁在这里有这样的进步 对于之前已被遗传到离境的婴儿 从这些应得的加薪中,我们增加了对wh的加薪 ichthey保存了我们高度重视的进化的最后一个完整测量值 解决这些死亡不应在这个国家的任何情况下死亡 上帝将享有自由和人民政府 先于其他人的人不会从地球上消失 -
2010年10月15日晚上10:01 我也采用了缓慢而稳定的方法。 O(n^3)对于1169个字符来说不错,但对于较大的数据来说就不太好了。 小速度:在我的flp()函数中,起始大小写是一个字符,所以我们首先只搜索长度为2或更大的回文。 -
2010年10月15日11:02 PM 下面是我在Ruby中介绍的O(n^2)解决方案: -
2010年10月15日11:03 PM 为在帖子>中留下调试代码而欢呼< -
2010年10月16日上午6:33 txt=“‘四分七年的地表工作者正是因为这个国家包含了自由所构想的新国家,并表示所有人都被创造出来了,无论是按照约定的还是经过长期治疗的午睡或运动,我们都将面临巨大的民事压力,无论这场战争是否会加剧,我们已经最终决定了该领域的一部分 我为那些在国家可能生存的人寻找生命的归宿,它是我们应该为之奋斗的支持者和财产,但在阿根廷,我们不能奉献我们不能奉献的东西,我们不能放弃他的土地。勇敢的活着的人和挣扎着的死去的人,他们的奉献远远高于我们贫穷的前进的道路或减损世界的道路,他们几乎不记得或永远记住我们在这里所说的,但他们的兼并 此处所述的目的是为了将其用于完成未完成的工作,而这些工作即使取得了进展,也应在其之前将其指定为剩余的sk,因为这些sk会增加对其保留最后一次完整测量的原因的反对,而我们在这些基础上高度解决的问题是,这些sk不会死亡 我们不希望这个没有上帝的国家有一个自由的领土,也不希望人民的政府在人民面前从地球上消失” palins=[] 定义回文(): 对于范围内的i(len(txt)-1): #打印“iteration:”+str(i) j=长度(txt)-1 而(j>=i): #检查平原 温度=txt[i:j] last=len(温度)-1 iters=int(长度(温度)/2) flag=真 对于范围内的n(迭代): 如果温度[n]= 温度[最后一个]: flag=假 打破 如果标志==True: palins.append(临时) j=1 默认getmax(li): 最长=“ 对于li中的i: 如果len(i)>len(最长): 最长=i 返回(最长,长度(最长)) 回文() 打印“最长回文:%s,大小:%d”%getmax(palins) -
2010年10月16日下午4:40 方案中的O(n^2)解决方案 >我仍在寻找可以用于练习的“完美”解决方案 基于硬币兑换算法的解决方案几乎可以立即给出答案。 -
2010年10月17日上午7:52 下面是Matlab中的O(n^2)解决方案: 函数longest_palindrom_quad() %O(n^2)溶液 txt=['Fourscoreandsevenyearsago surfacathersbrowtforthonthisconta'… “一个拥有自由的想法,并接受了提议”… “只要所有人都能创造出平等的生活”… “记录午睡或运动的概念和治疗”… “长期以来,我们都在经历一场伟大的战争… “已将该字段的部分代码作为最终测试位置”… “这是谁的生活,而这正是国家的生活”… “以太方和我们应该做的正确的事,但我们不能太大”… “不奉献,我们不能奉献我们不能放弃这片土地。”… “挣扎着的活着的人和死去的人都已神圣至此”… “我们贫穷的前进道路或减损世界的财富”… “只要记住我们在这里说了什么,但频道就会忘记我在那里说了什么”… “这是为了将其奉献给未完成的工作”… “谁在这里有这样的进步,谁是老大”… “因为在那之前,我们已经被遗传给了出口”… “从这些被推荐的内容中,我们增加了对原因的投票”… “他们保存了我们高度重视的最后一次全面测量”… “因为这些死者不应该在这个国家死亡”… “上帝将拥有自由和人民的政府”… “先于其他人的人不会从地球上消失”]; n=长度(txt); 回文长度=-inf; 回文=[]; 对于idx=1:n [odd_found,odd_span]=扩展添加(idx); 如果找到odd_found odd_len=2*odd_span+1; 如果odd_len>palindrom_length 回文=[idx–odd_span,idx+odd_sspan]; 回文长度=odd_len; 结束 结束 [even_found,even_span]=扩展事件(idx); 如果找到偶数 even_len=2*even_span; 如果even_len>palindrom_length 回文=[idx–(even_span-1),idx+even_span]; 回文长度=odd_len; 结束 结束 结束 disp(['alindromis'txt(回文(1):回文(2)]); disp(['length is’num2str(回文_length)]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 函数[odd_fund,odd_span]=扩展添加(odd_i) flag=false; oi=1; 而(odd_i–oi>=1&&odd_i+oi<=n) 如果txt(oddi–oi)==txt(ODdi+oi) flag=真; 其他的 断裂; 结束 oi=oi+1; 结束 if标志 odd_found=真; odd_span=oi-1; 其他的 odd_found=假; odd_span=nan; 结束 结束 函数[even_found,even_span]=extend_even(even_i) flag=false; oi=1; while(even-i–(oi–1)<=n&&even-i+oi<=n) 如果txt(even_i+oi)==txt(even_i–(oi–1)) flag=真; 其他的 断裂; 结束 oi=oi+1; 结束 if标志 even_found=真; even_span=oi-1; 其他的 even_found=假; even_span=nan; 结束 结束 结束 -
2010年10月20日11:38 PM 这是戈朗的一个解决方案。 它跑得很快,只有0.1秒 在VirtualBox中的Linux中编译、链接和运行。 你可以在golang.org上运行它。 (写这个程序花了相当长的时间。这是我在戈朗的第一个程序。) -
2010年10月21日凌晨3:37 http://pastebin.com/embed_iframe.php?i=SiiKi8Yp -
2010年10月21日凌晨3:51 […]查找字符串中最长的回文:[…] -
2010年10月23日晚上9:53 下面是一个更具挑战性的算法测试用例: 在莎士比亚的作品集中,有3个回文,每个回文有15个字符,没有莎士比亚的回文更长。 两个短语是“女士,女士,女士”,这很容易找到。 第三个是什么? -
2010年10月24日凌晨3:49 [……]当然我是怎么看到编程实践博客的,但他们最近的一篇帖子吸引了我的眼球:找到字符串中最长的回文。给定一个字符串,该字符串中包含的最长回文是什么? 我想过了[…] -
2010年10月24日9:05 PM 以下是Factor中的解决方案: http://re-factor.blogspot.com/2010/10/longest-palindrome.html -
2010年10月28日晚上9:38 F中的Mine# -
2010年10月28日晚上9:40 F中的Mine# -
2010年10月30日上午11:21 我的C实现 http://codepad.org/Rcp5KmqC </年 . -
2010年10月30日上午11:22 我的C实现 http://codepad.org/Rcp5KmqC -
2011年3月17日下午5:26 -
2011年5月13日10:08 PM def longest_palindrome(S)(定义长度_线性): 最长,n=“,len(S) 如果n=0且j<n: 如果S[i]==S[j]: L追加(S[i]) 其他: 打破 i-=1 j+=1 如果L: return“”.join(L[::-1]+M+L) 返回“” -
2013年6月29日晚上10:46 使用系统; 使用系统。 收藏。 通用; 使用系统。 林克; 使用系统。 文本; 命名空间计数回文 { 班级计划 { static void Main(字符串[]参数) { 慰问。 WriteLine(“请输入字符串:”); 字符串测试=转换。 ToString(Console.ReadLine()); 慰问。 WriteLine(“最长的回文是”+最长回文(test)); 慰问。 ReadLine(); } protected static int LongestPalindrome(字符串str) { 整数i=0; 整数j=1; int oldJ=1; int intMax=1; int intCount=0; 如果(str.Length==0)返回0; 如果(str.Length==1)返回1; int[]intDistance=新int[2]{0,1}; for(int k=0;k<int Distance.Length;k++){ j=1+int距离[k]; 旧j=j; 整数=0; i=0; 而(j=0&jb)返回a; 返回b; } } } -
2014年10月24日上午6:42 这是O(n^2)中的解:“ranynar” https://github.com/huei90/leetcode-js/longest-palindrome-substring.js “` (函数(){ var expandAroundCenter=函数expandArroundCenter(s,c1,c2){ var l=c1, r=c2, n=s长度; 而(l>=0&&r<=n–1&&s[l]==s[r]){ l–; r++; } 返回s.substr(l+1,r–l–1); }; var longestPalindomeSimple=函数longestPalindomeSimple(s){ var n=s.长度; 如果(n==0){ 返回“”; } var最长=s[0];// 单个字符本身就是回文 for(var i=0;i最长长度){ 最长=p1; } var p2=expandAroundCenter(s,i,i+1); if(p2.length>最长长度){ 最长=p2; } } 回报最长; }; 最长的回文简单('bannad');//=> 阿纳纳 //比如悲剧@@ })(); “` -
2015年5月16日9:22 PM 公共类LongestPalindromicSubstring{ 公共静态void main(String[]args){ //TODO自动生成的方法存根 System.out.println(最长的回文( “四十分七年的地面工作者,正是因为这个国家包含了自由构想中的新国家,并致力于为所有人创造平等的位置。现在,无论是按照约定的还是经过长期药物治疗的午睡或动力,我们都能与更多的民用飞机进行战斗,无论这场战争是否会加剧,我们已经决定将这场战争作为最终的试验 我们应该把自己的生命放在国家可能生存的地方,这是一个共同的、正确的地方,但我们不能把自己奉献给更大的人,我们也不能把自己的土地让给他们。勇敢的活着的人和挣扎着的人,他们的奉献远远超过了我们贫穷的前进道路或减损世界的道路,他们永远不会忘记我们在这里所说的,但他们忘记了什么 在这里,它是为了继续或致力于完成完成的工作,即使他们已经完成了这些工作,也要继续进行下去。因此,我们要对从这些被添加的内容中获得的最后一个完整测量结果的原因进行补充,因为我们在这些内容中高度解决的问题不会在最后一个完全测量结果中消失 在这个国家,上帝将享有自由,人民的政府也将由人民组成,因为人民不会从地球上消失”); } public static String longestPalindrome(字符串s){ 字符串maxStr=“”; for(int i=s.length(); i>=0; i–){ maxStr=isPalindrom(s,i); if(maxStr.length()= 0) 断裂; } 返回maxStr; } public static String isPalindrom(字符串s,int len){ 整数i=0; StringBuffer str=新的StringBuffer; 字符串str1; 字符串str2; 字符串str3=“”; while(i+len<=s.长度()){ str1=str.substring(i,i+len).toString(); StringBuffer str4=新的StringBuff(str1); str2=str4.reverse().toString(); if(str1.equals(str2)&&str3.length()<str1.length{ str3=str1; 断裂; } 其他{ i++; } } 返回str3; } }