我正在尝试实现简单的字符串匹配。如果源字符串包含模式字符串,则算法应返回1 。我不明白为什么它在以下输入中返回-1
String source = "aababba";
String pattern = "abba";
这是我的实现:
public static int findMatch(String source, String pattern)
{
int j = 0, pos = -1;
boolean matched = false;
if(source.length() < pattern.length())
return -1;
for(int i = 0; i < (source.length() - pattern.length()); i++)
{
if(source.charAt(i) == pattern.charAt(j))
j++;
else
j = 0;
if(j == pattern.length())
{
matched = true;
break;
}
}
if(matched)
return 1;
return -1;
}
编辑:正如你们中许多人所建议的,罪魁祸首是for循环。我应该做到如下。其余代码相同。如答案所示,其他解决方案也是可能的。
for(int i = 0; i <= (source.length() - pattern.length()); i++)
{
if(source.charAt(i+j) == pattern.charAt(j))
{
源的长度为7。模式的长度为4。您的语句i < (source.length() - pattern.length()
对于i> 2而言将不是正确的,因此循环不会足够“远”地运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句