栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

串的模式匹配(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

串的模式匹配(一)

子串的定位操作通常称为串的模式匹配,目的是求解子串(模式串)在主串中的位置。

第一次匹配:
            *
	i=1		c d a b c d		
	j=1		a b c 
	        ^
第二次匹配:
			  *
	i=2		c d a b c d		
	j=1		  a b c 
			  ^
第三次匹配:
				*
	i=3		c d a b c d		
	j=1		    a b c 
				^
第四次匹配:
				  *
	i=4		c d a b c d		
	j=2		    a b c 
				  ^			
第五次匹配:
				  	*
	i=5		c d a b c d		
	j=3		    a b c 
				 	^	
			
//字符串的暴力匹配算法。
	static int Index(char S[], char T[]){
		int i=1,j=1;
		while(i
			if(S[i] == T[j]){
				i++;j++;	
			}else{
				i=i-j+2;j=1;
			}
		}
		if(j>=T.length) {
			return i-T.length;
		}else
			return 0;
	}

下面算法主要运用Java String的常用方法进行递归求解,点击查看Java String的常用方法

//字符串的暴力匹配算法——递归匹配。
	static int Index1(String S, String T) {
		int i=1;
		while(i
			String sub =S.substring(i, T.length()+i);//字符串截取
			if(T.compareTo(sub)!=0) //字符串比较
				i++;
			else
				return i;
		}
		return 0;
	}

如下是字符串匹配的函数具体调用。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		String S = "cdabcd";
		String T = "abc";
		//字符串的暴力匹配
		int id = Index(S.toCharArray(),T.toCharArray());
		//递归匹配
		//int id = Index1(S, T);
		if(id == 0) {
			System.out.print("匹配失败!");
		}else {
			System.out.print("匹配成功!字符串T在字符串S的第"+id+"的位置。");
		}	
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884185.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号