題目
問題描述:
在計算機(jī)中,通配符一種特殊語法,廣泛應(yīng)用于文件搜索、數(shù)據(jù)庫、正則表達(dá)式等領(lǐng)域。現(xiàn)要求各位實現(xiàn)字符串通配符的算法。
要求:
實現(xiàn)如下2個通配符:
- *:匹配0個或以上的字符(注:能被*和?匹配的字符僅由英文字母和數(shù)字0到9組成,下同)
- ?:匹配1個字符
注意:匹配時不區(qū)分大小寫。
輸入:
通配符表達(dá)式;
一組字符串。
輸出:
返回不區(qū)分大小寫的匹配結(jié)果,匹配成功輸出true,匹配失敗輸出false。
數(shù)據(jù)范圍:字符串長度:1≤s≤100。
進(jìn)階:時間復(fù)雜度:O(n^2),空間復(fù)雜度:O(n)。
輸入描述:
先輸入一個帶有通配符的字符串,再輸入一個需要匹配的字符串。
輸出描述:
返回不區(qū)分大小寫的匹配結(jié)果,匹配成功輸出true,匹配失敗輸出false。
示例1
輸入:
te?t*.*
txt12.xls
輸出:
false文章來源:http://www.zghlxwxcb.cn/news/detail-618211.html
示例2
輸入:
z
zz
輸出:
false
示例3
輸入:
pq
pppq
輸出:
false
示例4
輸入:
**Z
0QZz
輸出:
true
示例5
輸入:
?*Bc*?
abcd
輸出:
true
示例6
輸入:
h*?*a
h#a
輸出:
false
說明:根據(jù)題目描述可知能被*和?匹配的字符僅由英文字母和數(shù)字0到9組成,所以?不能匹配#,故輸出false
示例7
輸入:
p*p*qp**pq*p**p***ppq
pppppppqppqqppqppppqqqppqppqpqqqppqpqpppqpppqpqqqpqqp
輸出:
false
代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-618211.html
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
String t = sc.nextLine();
String s = sc.nextLine();
System.out.println(match(t, s));
}
}
public static boolean match(String t, String s) {
char[] ct = t.toCharArray();
char[] cs = s.toCharArray();
int lt = ct.length;
int ls = cs.length;
boolean[][] dp = new boolean[ls + 1][lt + 1];
dp[0][0] = true;
for(int i = 0; i <= ls; i++) {
for(int j = 1; j <= lt; j++) {
if(ct[j - 1] == '*') {
if(i == 0) {
dp[i][j] = dp[i][j - 1];
} else {
if(cs[i- 1] == '.' || (cs[i - 1] == 'A' && cs[i - 1] <= 'Z') || (cs[i - 1] >= 'a' && cs[i - 1] <= 'z') || (cs[i - 1] >= '0' && cs[i - 1] <= '9')) {
dp[i][j] = dp[i - 1][j] || dp[i][j - 1];
}
}
} else {
if(i > 0 && defs(ct[j - 1], cs[i - 1])) {
dp[i][j] = dp[i- 1][j - 1];
}
}
}
}
return dp[ls][lt];
}
public static boolean defs(char t, char s) {
if(t == '?') {
return true;
}
if(t >= 'a' && t <= 'z') {
t = (char)(t - 'a' + 'A');
}
if(s >= 'a' && s <= 'z') {
s = (char)(s - 'a' + 'A');
}
return s == t;
}
}
到了這里,關(guān)于16-字符串通配符的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!