「java最优匹配」最佳匹配算法
本篇文章给大家谈谈java最优匹配,以及最佳匹配算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java编程实现字符串的模式匹配
- 2、Java字符串匹配?
- 3、求 JAVA 字符串匹配 完美算法
- 4、java 正则匹配
- 5、JAVA编译器的匹配问题
- 6、java现在有两个list类型的数据,如何进行字符串匹配和替换
Java编程实现字符串的模式匹配
传统的字符串模式匹配算法(也就是BF算法)就是对于主串和模式串双双自左向右,一个一个字符比较,如果不匹配,主串和模式串的位置指针都要回溯。这样的算法时间复杂度为O(n*m),其中n和m分别为串s和串t的长度。
KMP 算法是由Knuth,Morris和Pratt等人共同提出的,所以成为Knuth-Morris-Pratt算法,简称KMP算法。KMP算法是字符串模式匹配中的经典算法。和BF算法相比,KMP算法的不同点是匹配过程中,主串的位置指针不会回溯,这样的结果使得算法时间复杂度只为O(n+m)。
Java字符串匹配?
按LS所说的确可以。要是一定要用String的话可以用
String[] s;
for(String ss:s)
if(ss.contains("贸易"))
System.out.println(ss);
这样的方法。
求 JAVA 字符串匹配 完美算法
只需要实例化 类Matching 设置参数 并调用m.getIndex()方法就OK 请测试... public class Test18{
public static void main(String[] args){
Matching m = new Matching();
m.setOrgStr("ALSKLSHFKDLLS");
m.setSubStr("LS");
System.out.println(m.getIndex());
}
}
class Matching{
String orgStr ="";
String subStr ="";
public void setOrgStr(String orgStr){
this.orgStr = orgStr;
}
public void setSubStr(String subStr){
this.subStr = subStr;
}
public String getIndex(){
StringBuffer sb = new StringBuffer("{");
//根据关键字subStr来拆分字符串orgStr所得的字符串数组
String[] sub = orgStr.split(subStr);
int keyLength = subStr.length(); //关键字长度
int keySize = 0; //关键字个数
int subSize = sub.length; //子字符串个数
int subLength = 0; //子字符串长度
if(!orgStr.endsWith(subStr)){
keySize = subSize-1;
}else
keySize = subSize; int[] index = new int[keySize];//关键字下标数组
for(int i=0;ikeySize;i++){
subLength = sub[i].length();
if(i==0){
index[i]=subLength;
}else
index[i]=index[i-1]+subLength+keyLength;
}
if(keySize0){
int l = keySize-1;
for(int i=0;il;i++){
sb.append(index[i]+",");
}
sb.append(index[l]);//最后一个关键字下标
}else{
sb.append("NULL");
}
sb.append("}");
return sb.toString();
}
}
java 正则匹配
按照你的要求编写的Java正则匹配程序如下
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class A {
public static void main(String[] args) {
String s="[n]xxxxxxx/[n]";
String regex="((.+?)).*?/\\2";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
}
}
}
运行结果
[n]
JAVA编译器的匹配问题
我也提问过相同问题,没有合适答案,后来同学给了个答案不知道对否:
第一步,找精确匹配(形参实参精确匹配的同一类型)找到,则执行,找不到转第二步。
第二步,找可行匹配(符合替换原则的匹配),没找到可行匹配,报错,只找到一个可行匹配,执行可行匹配对应的方法,如果有多于一个的可行匹配,转第三步。
第三步,多个可行匹配两两比较,多个幸存者,报错,一个幸存者,则执行。
两两比较原则是:撇开实参,只比较形参,依据替换原则,谁的层次低谁在该形参上胜出。
java现在有两个list类型的数据,如何进行字符串匹配和替换
给定一个字符串与list1进行匹配,要么不匹配,要么就找出最大的匹配子串。然后把list2同样索引的字符串替换成给定字符串。然后输出list2,是这样么?
public static void main(String[] args) {
ListString list1 = new ArrayListString();
list1.add("news");
list1.add("newssport");
list1.add("newssportfootball");
ListString list2 = new ArrayListString();
list2.add("xinwen1");
list2.add("xinwen2");
list2.add("xinwen3");
String str = "newssportfootball enrgq asderfnwef";
int index = -1;
int max = 0;
for(int i = 0;ilist1.size();i++)
{
String temp = list1.get(i);
if(str.indexOf(temp)!=-1maxtemp.length()){
max = temp.length();
index = i;
}
}
if(index!=-1){
System.out.println("改变前:"+list2.get(index));
list2.add(index, list1.get(index));
System.out.println("改变后:"+list2.get(index));
}
}
java最优匹配的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于最佳匹配算法、java最优匹配的信息别忘了在本站进行查找喔。
发布于:2022-11-30,除非注明,否则均为
原创文章,转载请注明出处。