手写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));}}
输出
-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()相关推荐
- 安全系列之——手写JAVA加密、解密
其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...
- 视频教程-手写Java框架系列教程之一反射(含配套资料)-Java
手写Java框架系列教程之一反射(含配套资料) 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业 ...
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...
<pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的
<pre name="code" class="java"> package com.huiwen; import java.util.Scanne ...
- 【XML和Java】手写Java程序引用xsd验证xml
一.首先要有一个xml文件和xsd文件 (1) database.conf.xml <?xml version="1.0" encoding="UTF-8" ...
- 手写小程序:字符串分隔
手写小程序:字符串分隔 题目 描述: •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输 ...
- java linkedlist底层_手写Java LinkedList核心源码
上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...
- 监督学习:KNN(K-近邻)算法实现手写数字识别的三种方法
没人会看的开场白:本来觉得自己从数据建模转人工智能方向应该问题不大(自我感觉自己算法学的不错).结果一个K-邻近实现手写数字识别的代码就让我改了三四天.虽然网上这方面的代码是很多,但是我运行了好几个, ...
- (手写识别) Zinnia库及其实现方法研究
Zinnia库及其实现方法研究 (转) zinnia是一个开源的手写识别库.采用C++实现.具有手写识别,学习以及文字模型数据制作转换等功能. 项目地址 [http://zinnia.sourcefo ...
最新文章
- @ControllerAdvice注解(全局异常捕获)
- C++虚函数与虚函数表
- C++远航之封装篇——析构函数
- 神经网络中Batch和Epoch之间的区别
- python学习笔记4(对象/引用;多范式; 上下文管理器)
- 陌陌宣布启用全新中文名“挚文集团” ,Q2净利润4.6亿元
- 微信7.0.4 iOS版发布:这项经典功能正式下线!
- Hello Quartz (第四部分)
- oracle 日期格式化_日期格式化跨年bug,是否与你不期而遇?
- iOS 封装Healthkit
- 关于英语写作和阅读的学习——施一公教授的两篇博文
- 计算机博士专业学位,计算机博士
- 吐血整理公众号推文制作技巧
- 逼自己一把,你就优秀了
- GPL和LGPL介绍
- Balser相机连接以后,采集图像失败
- 10月,我运动我健康
- sourcemap功能简介
- 计算机运维人员培训计划,关于机房人员培训、工作计划安排
- js学习01 :js编写位置+js基础语法