以下是我的源代码:
`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
刷leetcode题的时候,建议之间在线写代码,不要借助IDE
你要相信同样的输入会产生同样的结果。如果出现了不同的结果,肯定是有一些条件被改变了。
看到这种情况应该就能猜到问题在之前的输入上。
试一下同时输入
"aaaabaaaa"
"aaabaaaa"
就能看到错误的结果了。
顺便说下lstr是局部变量,返回局部变量的地址是错误的。你不能保证函数执行完毕后它指向的数据仍然可用
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。