天地无极,乾坤剑法

导航

 

题目描述

问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)
?:匹配1个字符


输入:
通配符表达式;
一组字符串。


输出:
返回匹配的结果,正确输出true,错误输出false

输入描述:

先输入一个带有通配符的字符串,再输入一个需要匹配的字符串

输出描述:

返回匹配的结果,正确输出true,错误输出false

示例1

输入

te?t*.*
txt12.xls

输出 

false

代码如下:

 1 package com.yzh.hehe;
 2 
 3 import java.util.Scanner;
 4 
 5 public class StringTongPei {
 6 
 7     public static void main(String[] args) { 
 8         Scanner scanner=new Scanner(System.in);
 9         while (scanner.hasNext()) {
10             System.out.println(stringTongPei(scanner.nextLine(), scanner.nextLine()));
11         }
12         scanner.close();
13     }
14     //动态规划(也可用Java自带的正则解决)     
15     private static boolean stringTongPei(String tp,String  string) {
16         int length1=tp.length();
17         int length2=string.length();
18         boolean[][] arr=new boolean[length1+1][length2+1];
19         arr[0][0]=true;
20         for (int i = 1; i <=length1; i++) {
21             for (int j = 1; j <= length2; j++) {
22                 if (tp.charAt(i-1)=='*') {
23                     if (arr[i-1][j]==true||arr[i][j-1]==true) {
24                         arr[i][j]=true;
25                     } 
26                 }else if (tp.charAt(i-1)=='?') {
27                     if (arr[i-1][j-1]==true) {
28                         arr[i][j]=true;
29                     }
30                 }else {
31                     if (arr[i-1][j-1]==true&&(tp.charAt(i-1)==string.charAt(j-1))) {
32                         arr[i][j]=true;
33                     }
34                 }
35             }
36         }
37         return arr[length1][length2];
38                 
39     }
40 
41 }

参考:http://www.mamicode.com/info-detail-986984.html
posted on 2018-04-18 17:39  天地无极,乾坤剑法  阅读(211)  评论(0)    收藏  举报