BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #88908同步于 2016/2/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

求问Leetcode第5题,求一个字符串的最长回文子串,超时…

qgpmztmf
2016/2/22镜像同步20 回复
语言的话用的是swift… 想使用动态规划解决,字符串为S 定义:如果S[i]和S[j]之间的字符串是回文的,则c[i,j] = 1,否则c[i,j] = 0 如果S[i]==S[j],则c[i,j] = c[i-1,j+1] 如果S[i]==S[i+1], 则c[i,i+1] = 1 原始条件:c[i,i]=1 自己测试的话没有问题…超时难道是因为swift蛋疼的字符串操作吗…?求大神解答啊为什么会超时[em9] 下面贴代码… func findLongestPalindrome(s: String) -> String{ var c = [[Bool]]() //记录中间结果的表 var begin = 0 //记录回文子串起始位置 var maxLen = 0 //记录回文子串长度 for _ in 0...s.characters.count { //给表赋初值false c.append(Array(count:s.characters.count ,repeatedValue:false)); } for var i = 0 ; i < s.characters.count ; i++ { c[i][i] = true begin = i maxLen = 1 } for var i = 0 ; i < s.characters.count - 1 ; i++ { if s[s.startIndex.advancedBy(i)] == s[s.startIndex.advancedBy(i+1)]{ //判断s[i],s[i+1]是否相等 c[i][i+1] = true begin = i maxLen = 2 } } for var length = 3 ; length <= s.characters.count ; length++ { for var i = 0; i < s.characters.count - length + 1; i++ { let j = i + length - 1 if s[s.startIndex.advancedBy(i)] == s[s.startIndex.advancedBy(j)] && c[i+1][j-1]{ //判断s[i],s[j]是否相等 c[i][j] = true begin = i maxLen = length } } } let start = s.startIndex.advancedBy(begin); //截取字符串作为结果 let end = s.endIndex.advancedBy(-(s.characters.count - begin - maxLen)); let range = Range<String.Index>(start: start,end: end); let result = s.substringWithRange(range); return result }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wht机器人#1 · 2016/2/22
小破明
leo0316机器人#2 · 2016/2/22
manacher算法
k8dasd机器人#3 · 2016/2/23
jokenliv机器人#4 · 2016/2/23
第二个for循环判断包含两个元素的回文字符情况,但是貌似可以删除吧?和第三个for循环结合到一块不行么,就是第三个for循环lenth从2开始,第二个for循环删掉 第一个for循环,begin = i 这句也可以删掉吧? 最后几句看不懂,但感觉没问题,应该是能求出回文串,下标相差最大的就是最长回文串
youmi机器人#5 · 2016/2/23
不应该是 如果S[i]==S[j],则c[i,j] = c[i+1,j-1] 这样吗
weiyuan机器人#6 · 2016/2/23
我记得是不是要用后缀树
Thomas0726机器人#7 · 2016/2/23
【 在 jokenliv 的大作中提到: 】 : 第二个for循环判断包含两个元素的回文字符情况,但是貌似可以删除吧?和第三个for循环结合到一块不行么,就是第三个for循环lenth从2开始,第二个for循环删掉 : 第一个for循环,begin = i 这句也可以删掉吧? : 最后几句看不懂,但感觉没问题,应该是能求出回文串,下标相差最大的就是最长回文串 老司机
jokenliv机器人#8 · 2016/2/23
百度大神给解释一下啊,我这翻车了 【 在 Thomas0726 (ThomasHS) 的大作中提到: 】 : 老司机 通过『我邮2.0』发布
sj159372009机器人#9 · 2016/2/23
板凳正解 【 在 qgpmztmf 的大作中提到: 】 语言的话用的是swift… 想使用动态规划解决,字符...