手写java字符串匹配方法IndexOf()详解

KLQ 2020-08-11 16:14:47 java常见问答 7387

下面的内容要给大家分享的是和手写java字符串简单匹配方法IndexOf()相关的内容,具体的一起来看一下下文吧。

简单的字符串模式匹配算法,可以使用KMP进行优化。

/**
 * @param s1 母串
 * @param s2 子串
 * @return
 */
public static int myIndexOf(String str1, String str2)
{
    int pos = -1;
    int index = 0;
    char[] s1 = str1.toCharArray();
    char[] s2 = str2.toCharArray();
    if (str2.length() > str1.length() || str2.length() == 0)
    {
        return -1;
    }
    /**
     * offset 偏移量,注意不要越界也可以
     */
    for (int i = 0; i < s1.length; i++)
    {
        boolean flag = false;
        for (int offset = 0; offset < s2.length; offset++)
        {
            if (i + offset >= s1.length || s1[i + offset] != s2[offset])
            {
                flag = true;
            }
        }
        if (flag == false)
        {
            pos = i;
            break;
        }
    }
    return pos;
}

使用随机数类生成一个Long和Int数据进行测试。

并和java的方法进行对比。

public static void main(String[] args)
{
    for (int i = 1; i < 50; i++)
    {
        String str1 = new String(new Long(new Random()
                .nextLong())
            .toString());
        String str2 = new String(new Long(new Random()
                .nextInt(100))
            .toString());
        System.out.println(str1);
        System.out.println(str2);
        System.out.println("String的----------------:" + str1.indexOf(str2));
        System.out.println("我的           ----------------:" + myIndexOf(str1, str2));
    }
}

输出

输出

以上的内容你都清楚了吧,更多java程序代码例子,请多多的关注奇Q工具网来进行了解吧。

推荐阅读:

java字符串转数组如何转换?怎么实现?

java字符串数组定义是?字符串数组如何转换成字符串?

java字符串转int,java如何将string转int?