字符串匹配(java)

news/2024/7/8 5:40:51

字符串匹配

字符串匹配可以用到蛮力法。
对于字符串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);
}

}


http://www.niftyadmin.cn/n/2434444.html

相关文章

内部类(匿名内部类)(3)

匿名内部类 匿名内部类&#xff0c;就是一个没有名字的内部类&#xff0c;前提是匿名内部类一定是一个局部内部类。因为匿名内部类没有名字&#xff0c;所以在java中药使用匿名内部类他就必须基于接口或者继承&#xff0c;让大家知道他的父类时谁才能使用。 匿名内部类的格式 …

让 Python 更加充分的使用 Sqlite3

我最近在涉及大量数据处理的项目中频繁使用 sqlite3。我最初的尝试根本不涉及任何数据库&#xff0c;所有的数据都将保存在内存中&#xff0c;包括字典查找、迭代和条件等查询。这很好&#xff0c;但可以放入内存的只有那么多&#xff0c;并且将数据从磁盘重新生成或加载到内存…

Oracle纯SQL实现递归查询分页(树查询分页)

查遍了Google、Baidu&#xff0c;都没有结果&#xff0c;可能是关键词不对。只好发挥自己的想象力&#xff0c;对&#xff0c;想象力&#xff0c;终于实现了。 需求是&#xff1a;根节点有N级子节点&#xff0c;显示从根节点到该子节点的所有父子节点。说白了&#xff0c;pageS…

Java反射(1)

Java反射 Java反射机制是运行状态中&#xff0c;对于任意一个类都能够知道这个类的所有属性和方法&#xff08;包括私有的&#xff09;&#xff1b;对于任意一个对象&#xff0c;都能够调用他的任意方法和属性&#xff1b;这种动态动态获取信息及动态调用对象方法的功能称为功能…

【定制化图像开放平台】入门实例之手写数字模型训练

为什么80%的码农都做不了架构师&#xff1f;>>> 本帖主要用手写数字为例进行一个简单入门实例总结(非官方) 平台网站:http://ai.baidu.com/customize/app/model/ 定制化图像开放平台使用教程之一:http://ai.baidu.com/forum/topic/show/492760定制化图像开放平台使用…

泛型新手心得

泛型 是JDK1.5版本后出现的新特性&#xff0c;是一个类型安全机制。 优势 1.将运行时出现的ClassCastException转移到编译时期&#xff0c;方便程序员解决问题&#xff0c;让运行时问题减少&#xff0c;更安全。 2.避免了强制转换的麻烦。 ArraryList<String> al new Ar…

python小游戏(剪刀石头布)

#!/usr/bin/python#-- coding: utf8--import random #导入随机数的模块 computer random.choice([石头, 剪刀, 布])player raw_input(请出拳(石头/剪刀/布): ) print "Your choice: %s, Computers choice: %s" % (player, computer)if player 石头:if computer 石…

java反射(2)——属性的操作

java反射 之前的博客java反射讲了有关java反射的基础知识&#xff1a;什么是java发射&#xff0c;如何获取Class对象&#xff0c;如何获取到Class对象的属性、方法和构造方法等。 今天的博客主要有关如何操作属性、方法、构造方法 我们直接进入主题&#xff1a;要想操作一个类…