当前位置: 代码迷 >> C语言 >> 改正此算法,或另外给点算法思想!
  详细解决方案

改正此算法,或另外给点算法思想!

热度:231   发布时间:2007-06-19 20:27:43.0
改正此算法,或另外给点算法思想!

这是一判断一源字符串是否包含另一字符串,需要判断包含的字符是整体联系的,就第二字符串所在源字符串是连续性,另如果判断出源字符串含有此字符串,就返回该字符串在源程序字符串的启始下标数字给主程序。
做很多此程序,但每次都有小BUG,特求助下好算法。
int lookbaohan(const char s1[],const char s2[])
{
int i=0,j=0,m;
/*判断第一起始位置*/
while(s1[j]!='\0'){
if(s1[j]!=s2[i])
++j;
else
break;}
++j&&++i;
/*判断两字符第二位置是否相等*/
while(s1[j]!='\0'&&s2[i]!='\0'){
if(s1[j]!=s2[i]){ /*如不相等,继续查找第一起始位置直到到达空字符串止*/
i=0;
if(s1[j]!=s2[i]&&s1[j]!='\0')
++j;}
else
++i&&++j;
}
if(s1[j]!=s2[i])
return -1;
else
m=j-i;
return m;
}

[此贴子已经被作者于2007-6-19 20:50:46编辑过]

搜索更多相关的解决方案: 算法  源程序  主程序  字符串  

----------------解决方案--------------------------------------------------------
是我没把要求说清楚吗?主函数就没列出,就是算法有问题。
----------------解决方案--------------------------------------------------------
快速模式匹配KMP.
----------------解决方案--------------------------------------------------------
我不明白
----------------解决方案--------------------------------------------------------
LS,你在这里灌水吗?
----------------解决方案--------------------------------------------------------

能给出个精确点的算法吗?每次算法考虑的够多了,以为好了,过段时间试下,又出现BUG。


----------------解决方案--------------------------------------------------------

哎,为什么这么多BUG。总是以为成功之后在发现BUG。


----------------解决方案--------------------------------------------------------

[此贴子已经被作者于2007-6-21 12:20:51编辑过]


----------------解决方案--------------------------------------------------------
以下是引用aipb2007在2007-6-19 21:24:15的发言:
LS,你在这里灌水吗?

你也在这里灌水吗?
我也是....
----------------解决方案--------------------------------------------------------
用 KMP 算法要分别对两个字符串进行匹配,
适合用于主串比较长,匹配串比较短的情况.
如果主串不是很长,用一般的匹配算法也差不多了.
----------------解决方案--------------------------------------------------------

  相关解决方案