开发者社区> 问答> 正文

leetcode 最长回文字符串,我的dp算法一直在本地测试通过,在leetcode上结果错误

以下是我的源代码:
`int dp1000 = {0};
char longestPalindrome(char s) {

int length = strlen(s);
int i = 0, j = 0;
char lstr[1000] = "";
int left = 0, maxLen = 1; 

if (!length) return "";
if (length == 1)  return s;

for (j = 0; j < length; j++) dp[j][j] = 1;

for (j = 0; j < length - 1; j++) {
    if (s[j] == s[j+1]) {
       dp[j][j+1] = 1;
       left = j;
       maxLen = 2;
    }
}
        
for (int len = 3; len <= length; len++) {  
    for (int i = 0; i < length - len + 1; i++) {  
      int j = i + len - 1;  
      if (s[i] == s[j] && dp[i+1][j-1]) {  
        dp[i][j] = 1;  
        left = i;  
        maxLen = len;  
      }  
    }  
 }  
 
 for ( i = left, j = 0; i < left + maxLen; i++,j++) {
     lstr[j] = s[i];
 }
//strncpy(lstr, s + left, maxLen);

return lstr;

}`

输入为"aaabaaaa" leetcode输出为"aaabaaaa"应该输出为"aaabaaa",在本地输出是“aaabaaa

展开
收起
杨冬芳 2016-05-30 19:30:13 3299 0
2 条回答
写回答
取消 提交回答
  • Keep It Simple , Stupid. 独立博客:白水东城(www.baishuidongcheng.com)

    刷leetcode题的时候,建议之间在线写代码,不要借助IDE

    2019-07-17 19:21:00
    赞同 展开评论 打赏
  • IT从业

    你要相信同样的输入会产生同样的结果。如果出现了不同的结果,肯定是有一些条件被改变了。
    看到这种情况应该就能猜到问题在之前的输入上。
    试一下同时输入
    "aaaabaaaa"
    "aaabaaaa"
    就能看到错误的结果了。
    screenshot
    顺便说下lstr是局部变量,返回局部变量的地址是错误的。你不能保证函数执行完毕后它指向的数据仍然可用

    2019-07-17 19:21:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载