Java中的简单字符串匹配

仙女座

我正在尝试实现简单的字符串匹配。如果字符串包含模式字符串,则算法应返回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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章