【发布时间】:2017-11-27 19:36:23
【问题描述】:
我遇到了一个问题,我们需要在给定的两个字符串中找到常用词。问题描述:
概述:给定两个字符串,找出两个字符串共有的单词。 例如:输入:“一二三”、“二三五”。输出:“二”、“三”。
输入:两个字符串。
OUTPUT:两个给定字符串中的常用词,返回字符串的二维数组。
错误情况:无效输入返回 NULL。
注意:如果没有常用词,返回NULL。
我已经解决了这个问题,并开始在 Visual Studio 2013 中解决它。 它有很多测试用例。
这是我的代码:
int ispresent(char*a, char *b)
{
int m = strlen(a);
int n = strlen(b);
int i, j;
for ( i = 0; i <= n - m; i++){
for ( j = 0; j<m; j++){
if (a[j] != b[i + j]) break;
}
if (j == m)
return 1;
}
return 0;
}
char ** commonWords(char *str1, char *str2)
{
if (str1 != NULL&&str2 != NULL)
{
char **res = (char**)malloc(10 * sizeof(char*));
for (int i = 0; i < 10; i++)
res[i] = (char*)malloc(31 * sizeof(char));
char *a = (char*)malloc(31 * sizeof(char));
int k = 0, j = 0;
for (int i = 0; str1[i] != '\0'; i++, j++)
{
if (str1[i] != ' ')
a[j] = str1[i];
if (str1[i] == ' ' || str1[i] == '\0')
{
a[j] = '\0';
if (ispresent(a, str2))
res[k++] = a;
j = 0;
}
}
return res;
}
return NULL;
}
但是我在这里遇到了运行时错误: 程序意外终止
请问有什么解决办法吗?
我有一个建议,它可能是重复的 但是我的代码和那个不一样..我不是在问问题>我是在向我的代码提出建议
【问题讨论】:
-
使用调试器,这是最好的方法。
-
即使我一直在尝试,但它停止了
-
调试器有望在您的代码不正确或显示未正确初始化的数组附近停止。
-
这个家伙的作业副本:P stackoverflow.com/questions/36043210/…
-
那个人是我们课程的成员之一@Spikolynn