简单的字符串模式匹配算法,可使用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));}}

输出

-3622146795902383909
57
String的----------------:-1
我的           ----------------:-1
1679239383684246692
67
String的----------------:1
我的           ----------------:1
-1953669201709644975
39
String的----------------:-1
我的           ----------------:-1
6962415100876379873
10
String的----------------:7
我的           ----------------:7
-4904617570101049131
90
String的----------------:2
我的           ----------------:2

转载于:https://www.cnblogs.com/zhazhaacmer/p/11052624.html

手写Java的字符串简单匹配方法IndexOf()相关推荐

  1. 安全系列之——手写JAVA加密、解密

    其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...

  2. 视频教程-手写Java框架系列教程之一反射(含配套资料)-Java

    手写Java框架系列教程之一反射(含配套资料) 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业 ...

  3. 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...

    <pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...

  4. 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的

    <pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...

  5. 【XML和Java】手写Java程序引用xsd验证xml

    一.首先要有一个xml文件和xsd文件 (1) database.conf.xml <?xml version="1.0" encoding="UTF-8" ...

  6. 手写小程序:字符串分隔

    手写小程序:字符串分隔 题目 描述: •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输 ...

  7. java linkedlist底层_手写Java LinkedList核心源码

    上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...

  8. 监督学习:KNN(K-近邻)算法实现手写数字识别的三种方法

    没人会看的开场白:本来觉得自己从数据建模转人工智能方向应该问题不大(自我感觉自己算法学的不错).结果一个K-邻近实现手写数字识别的代码就让我改了三四天.虽然网上这方面的代码是很多,但是我运行了好几个, ...

  9. (手写识别) Zinnia库及其实现方法研究

    Zinnia库及其实现方法研究 (转) zinnia是一个开源的手写识别库.采用C++实现.具有手写识别,学习以及文字模型数据制作转换等功能. 项目地址 [http://zinnia.sourcefo ...

最新文章

  1. @ControllerAdvice注解(全局异常捕获)
  2. C++虚函数与虚函数表
  3. C++远航之封装篇——析构函数
  4. 神经网络中Batch和Epoch之间的区别
  5. python学习笔记4(对象/引用;多范式; 上下文管理器)
  6. 陌陌宣布启用全新中文名“挚文集团” ,Q2净利润4.6亿元
  7. 微信7.0.4 iOS版发布:这项经典功能正式下线!
  8. Hello Quartz (第四部分)
  9. oracle 日期格式化_日期格式化跨年bug,是否与你不期而遇?
  10. iOS 封装Healthkit
  11. 关于英语写作和阅读的学习——施一公教授的两篇博文
  12. 计算机博士专业学位,计算机博士
  13. 吐血整理公众号推文制作技巧
  14. 逼自己一把,你就优秀了
  15. GPL和LGPL介绍
  16. Balser相机连接以后,采集图像失败
  17. 10月,我运动我健康
  18. sourcemap功能简介
  19. 计算机运维人员培训计划,关于机房人员培训、工作计划安排
  20. js学习01 :js编写位置+js基础语法

热门文章

  1. JavaScript学习(四十三)—构造方法创建对象的图解和注意事项
  2. fat32硬盘格式能在苹果系统里读写操作吗?
  3. 被单位开除后,以前的工龄还算吗?
  4. 酒局中同事说“不把这杯酒喝了就是不给我面子”,我该怎么办?
  5. 版权审查只会越来越严
  6. 一颗明亮的火球从天空划过
  7. 春节档影片的成本各是多少?
  8. 教你如何判断水泥的质量好坏?
  9. 今天有个微信好友咨询我
  10. 当你没有能力的时候,所有的友善都是廉价的