字符串匹配

字符串匹配可以用到蛮力法。
对于字符串s和t,若t是s的子串,返回t在s中的位置(t的首字符在s中的下标),否则返回-1.

采用的是穷举法,从s的第一个字符开始查找,看t是否会出现。


下面直接看程序

package HuiWenStrings;
//有两个字符串s,t(其中t是s字符串的子字符串),求t字符串在s字符串中出现的位置。
//并输出

public class HuiWen {

	public static int disAdree(String s,String t) {
		int i =0;
		int j = 0;
		while(i<s.length()&&j<t.length()) {
			if(s.toCharArray()[i]==t.toCharArray()[j]) {
				i++;          //比较两个字符相同时
				j++;
			}else {                //比较两个字符不相同时
				i = i-j+1;         //i回退到原来i的下一个位置
				j = 0;             //j回退到0
			}
		}
		if(j==t.length()) {      //t的字符串比较完毕
			return i-j;        //t是s的子串,返回
		}else
			return -1;          //找不到就输出-1
		
	} 
	public static void main(String[] args) {
		// TODO 自动生成的方法存根

		String s ="a,b,c,d";
		String t = "b,c,d";
		HuiWen huiwen =new HuiWen();
		int a = huiwen.disAdree(s, t);
		System.out.println(a);
	}

}

有两个字符串s和t,设计一个算法,求t在s中出现的次数。

package 回文字符串;
//有两个字符串s和t,设计一个算法,求t在s中出现的次数。
public class HUIWenCount {

public static int disAdree(String s,String t) {
	int i =0;
	int j = 0;
	int num = 0;
	while(i<s.length()&&j<t.length()) {
		if(s.toCharArray()[i]==t.toCharArray()[j]) {
			i++;
			j++;
		}else {
			i = i-j+1;
			j = 0;
		}
	}
	if(j==t.length()) {
		num++;
		j= 0;
	}
	return num;
	
} 
public static void main(String[] args) {
	// TODO 自动生成的方法存根

	String s ="a,b,c,d";
	String t = "b,c,d";
	HUIWenCount huiwencount =new HUIWenCount();
	int a = huiwencount.disAdree(s, t);
	System.out.println(a);
}

}