匹配算法测试
括号匹配算法 java找出有多少种移除方案
mport java.util.Scanner;
import java.util.Stack;
/**
* @author Owner
*
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();//3条测试数据数据
Stack<Character> stack = null;
while(n!=0){
//从控制台读入一个测试字符串[]() [(])
String str = sc.next();
//如果该输入字符串为奇数,说明不匹配
if(str.length() % 2 == 1){
System.out.println("No");
}else{
//说明字符是偶数
stack = new Stack<Character>();
//遍历第一条测试字符串[]() [(])
for(int i=0;i<str.length();i++){
if(stack.isEmpty()){
//如果栈是空的
stack.push(str.charAt(i));
}else if(stack.peek() == '[' && str.charAt(i) == ']' || stack.peek() == '(' && str.charAt(i) == ')'){
//说明此时栈中字符不是空的,并且符合,
stack.pop();
}else{
stack.push(str.charAt(i));
}
}
if(stack.isEmpty()){
//如果栈是空的,说明括号匹配
System.out.println("Yes");
}else{
//说明栈不为空,括号不匹配
System.out.println("No");
}
}
n--;
}
}
}
B. 课程设计题目: 模式匹配算法的设计与实现
你是南邮的么??知道答案告诉我一下啊
C. 通讯录拼音搜索模糊匹配的算法问题
我用java写了个简单的,你可以多测试下:
publicstaticvoidmain(String[]args){
String[]name={"wang","hai","bao"};
String[]tests={"whb","WaHB","wangHB","HB","wh","whbo","whba"};
for(Stringstring:tests){
System.out.println(string+":"+match(name,string));
}
}
publicstaticbooleanmatch(String[]source,Stringinput){
if(source==null||source.length==0||input==null||input.length()==0){
returnfalse;
}
Stringtemp;
//统一转小写
input=input.toLowerCase();
for(inti=0;i<source.length;i++){
temp=source[i].toLowerCase();
if(temp==null||temp.length()==0){
returnfalse;
}
//最后一步特殊处理
if(i==source.length-1){
if(temp.startsWith(input)){
returntrue;
}
}
//输入的字符完全匹配到
if(input.startsWith(temp)){
//匹配到后生成新的字符串
input=input.substring(0,input.indexOf(temp));
//System.out.println("temp:"+temp+" 匹配到后input:"+input);
}
//首字母匹配到
elseif(temp.startsWith(input.substring(0,1))){
input=input.substring(1);
//System.out.println("temp:"+temp+" 匹配到后input:"+input);
}else{
returnfalse;
}
//表示匹配结束
if(input.length()==0){
returntrue;
}
}
returnfalse;
}
D. 求 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;i<keySize;i++){
subLength = sub[i].length();
if(i==0){
index[i]=subLength;
}else
index[i]=index[i-1]+subLength+keyLength;
}
if(keySize>0){
int l = keySize-1;
for(int i=0;i<l;i++){
sb.append(index[i]+",");
}
sb.append(index[l]);//最后一个关键字下标
}else{
sb.append("NULL");
}
sb.append("}");
return sb.toString();
}
}
E. 是否有人知道百合网的超级匹配的算法,是根据什么来的
超级匹配的筛选后台中加入了一个复杂的数据计算模块和爱情顾问的人工挑选。这个模块的计算依据是金百合会员专享的深度恋爱测试结果和恋人图像的描述。通过深度恋爱测试的结果,能清楚的了解每个会员在恋爱情境下的心态和应激反应,还原出他的正常生活状态,帮他们寻找到真正能长久在一起和谐生活的恋爱对象。而爱情顾问将同时依据会员的恋人图像,借助筛选后台来帮助会员挑选出那些在“眼睛的缘分”上更为默契的匹配对象。通过这两个方式,超级匹配对象的质量得到了最有效的保证。
F. 编一个函数,函数的功能是测试字符串中的括号是否匹配。
publicintCheckBrackets(char*input)
{
char*p;
intl=0,m=0,n=0;
intflag=1;
p=input;
while(*p!='