Leetcode 5. Longest Palindromic Substring出现的Runtime Error

我要你的自然74 2018-03-19 01:27:44
最近刚开始学习算法,于是在LeetCode上面做做题,但是经常遇到runtime error,帮忙看下哪里出了问题
思路:找到字符串每一个字符开始的最长对称字符串,然后取其中最长的一个

char* longestPalindrome(char* s) {
char ans={""},tmp={""};
int tmp_i,tmp_j;
for(int i = 0; i<strlen(s); i++)
for(int j = i+1; j<strlen(s); j++)
{
if(s[i] == s[j]){
//保存i,j的值
tmp_i = i; tmp_j = j;
//检查i,j之间是否对称
while(s[++i] == s[--j] && j>i);
//对称的情况
if(i >= j){
strncpy(tmp,s+tmp_i,tmp_j-tmp_i);
ans = strlen(tmp)>strlen(ans)?tmp:ans;
}
}
}
return ans;
}
...全文
421 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 自信男孩的回复:
两个问题: 1. 定义的ans和tmp是字符类型数组吗?但是也不是,是定义的char类型吗?也不是,因为后面用到了strlen(ans);所以这两个变量前后矛盾; 2. for的循环中对i, j为循环变量,但是循环体中,一并对i, j做了修改,因此应该是这儿导致的程序呢运行超时,建议对i,j的循环体中的修改用其他变量替换
在定义ans和tmp的时候用char*,用字符指针来定义,后面的循环体里的i,j都用tmpi和tmpj来代替就没有runtime error了,谢谢
自信男孩 2018-03-19
  • 打赏
  • 举报
回复
两个问题: 1. 定义的ans和tmp是字符类型数组吗?但是也不是,是定义的char类型吗?也不是,因为后面用到了strlen(ans);所以这两个变量前后矛盾; 2. for的循环中对i, j为循环变量,但是循环体中,一并对i, j做了修改,因此应该是这儿导致的程序呢运行超时,建议对i,j的循环体中的修改用其他变量替换
赵4老师 2018-03-19
  • 打赏
  • 举报
回复
边界条件 输入输出格式 ……
赵4老师 2018-03-19
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧