sunday算法和自己关于字符串匹配的一些思考
2016-08-02 14:53
417 查看
Sunday算法与kmp算法比较起来,更易理解,更容易实现,更重要的是kmp算法其实在实际运用中,并没有表现出来多大的效果。
所以Sunday算法就出来了。Sunday算法核心就是跳过更多的不需要比较的字符,我们可以考虑,字符串:s1,s2,i为指向s1的指针,j为指向s2的指针。
s1[i]!=s2[j],则传统的是我们要从s1[i]和s2[0]开始比较,这样其实太不理智,我们可以逆向思维,从后往前考虑,那么s2对应的s1后面的一个字符,如果和s2中从后往前的一个字符匹配,那么就可以分别移位到两个位置上去,反之没可能,则继续向下一个位置。
public static bool sunday(string str1,string str2){
int i = 0,j=0;
while (i < str1.Length && j < str2.Length&&str1.Length-i-1>str2.Length)
{
if (str1[i] == str2[j])
{
if (j == str2.Length)
{
//匹配成功
break;
}
i++;
j++;
}
else
{
int k = 0;
int s = i;
while (str2[k++]!=str1[s+str2.Length]&&s<str1.Length)
{
if (k >= str2.Length)
{
s++;
}
}
if (i == str1.Length)
break;
j = s - k;
i = j;
}
}
return true;
}
相关文章推荐
- 关于字符串匹配Sunday算法的个人想法
- 关于web自动化测试的一些自己的思考和总结
- 关于自己的一些思考
- 大规模字符串匹配处理的一些思考
- js中关于字符串匹配的一些东西
- 关于集成JPush过程中一些思考--仅供自己开阔思路
- 关于软件开发团队的一些思考
- 最近项目中一些关于代码编写管理的一些思考
- 关于Nokia手机数据传输部分的一些进展(转自自己的主页)
- [转帖] 关于sizeof()的一些思考
- 关于中国和中国软件发展的一些思考
- 关于Winnt/2k IDT的一些思考(续)
- 关于 sizeof() 的一些思考
- 3月24日 想到了一个字符串匹配的新算法 程序 时间复杂度自己不会算
- 关于性开放引发的一些思考
- 关于软件开发团队的一些思考
- 关于useBean的一些思考
- [原创]一些关于“共好”的思考
- 关于.NET WEB应用系统UI层的一些思考
- 关于Blog现象的一些思考。