java獲取字符串指定位置的字符,手寫Java的字符串簡單匹配方法IndexOf()

 2023-10-18 阅读 27 评论 0

摘要:簡單的字符串模式匹配算法,可使用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()

簡單的字符串模式匹配算法,可使用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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/149245.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息