串的模式匹配(一)

串的模式匹配

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

第一次匹配:
            *
	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<S.length && j<T.length){
			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<S.length()-T.length()+1) {
			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+"的位置。");
		}	
	}

下面链接为进阶版:
串的模式匹配(二)——KMP

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻猴儿

小编,多谢客官留下的赏钱。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值