国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

16-字符串通配符

這篇具有很好參考價值的文章主要介紹了16-字符串通配符。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

問題描述:

在計算機(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

示例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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【類型通配符】

    為了表示各種泛型List的父類,可以使用類型通配符 類型通配符:? List?:表示元素類型未知的List,它的元素可以匹配任何的類型 這種帶通配符的List僅表示它是各種泛型List的父類,并不能把元素添加到其中 如果不想讓List?是任何泛型的父類,只想讓它代表某一類泛型List的父

    2024年02月17日
    瀏覽(57)
  • Elasticsearch 通配符查詢

    通配符查詢(wildcard query) 匹配字段被通配符表達(dá)式(沒有被分析)匹配的文檔。支持的通配符為*(匹配任意字符序列,包括空字符序列)以及?(匹配任意單字符)。注意,此查詢可能會很慢,它需要迭代許多字段值。為了防止極慢的通配符匹配,通配符字段值不能以一個

    2024年02月11日
    瀏覽(28)
  • 活用 命令行通配符

    活用 命令行通配符

    本文是對 阮一峰老師 命令行通配符教程 [1] 的學(xué)習(xí)與記錄 通配符早于正則表達(dá)式出現(xiàn),可以看作是原始的正則表達(dá)式. 其功能沒有正則那么強(qiáng)大靈活,而勝在簡單和方便. - 字符 切回上一個路徑/分支 如圖: !! 代表上一個命令, 如圖: [Linux中“!\\\"的神奇用法](https://www.cnblogs.com/bian

    2024年02月10日
    瀏覽(25)
  • 泛型的通配符

    泛型的通配符

    類型的上界決定了泛型的范圍。 我們發(fā)現(xiàn)指定了泛型的上界為數(shù)值類Number時,傳入Boolean類型就會報錯。 如果沒有指定類型的邊界,可以認(rèn)可 T extends Object,當(dāng)指定了某個類型為上界,那么只接受某類型本身和子類型作為E的類型實參 我們要實現(xiàn)一個類去找數(shù)組的一個的最大值

    2023年04月08日
    瀏覽(21)
  • 【算法題】44. 通配符匹配

    給你一個輸入字符串 (s) 和一個字符模式 (p) ,請你實現(xiàn)一個支持 \\\'?\\\' 和 \\\'*\\\' 匹配規(guī)則的通配符匹配: \\\'?\\\' 可以匹配任何單個字符。 \\\'*\\\' 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要條件是:字符模式必須能夠 完全匹配 輸入字符串(而不是部分匹配)。 ?

    2024年01月25日
    瀏覽(19)
  • 44. 通配符匹配(動態(tài)規(guī)劃)

    Problem: 44. 通配符匹配 給你一個輸入字符串 (s) 和一個字符模式p ,請你實現(xiàn)一個支持 ‘?’ 和 ‘ ’ 匹配規(guī)則的通配符匹配: ‘?’ 可以匹配任何單個字符。 \\\' ’ 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要條件是:字符模式必須能夠 完全匹配 輸入字符

    2024年02月04日
    瀏覽(22)
  • 了解java中的通配符“?“

    了解java中的通配符“?“

    目錄 通配符的作用 ????????先看一段代碼 ????????用通配符\\\"?\\\"后,代碼變化 ????????結(jié)論 通配符上界? 通配符下界 對通配符上下界的注釋理解及其練習(xí)代碼?? 簡記: ? ?用于在泛型的使用,即為通配符. 在Java中,通配符(wildcard)主要用于泛型編程,用于表示一個

    2024年02月10日
    瀏覽(24)
  • LeetCode 44題:通配符匹配

    LeetCode 44題:通配符匹配

    給你一個輸入字符串 ( s ) 和一個字符模式 ( p ) ,請你實現(xiàn)一個支持? \\\'?\\\' ?和? \\\'*\\\' ?匹配規(guī)則的通配符匹配: \\\'?\\\' ?可以匹配任何單個字符。 \\\'*\\\' ?可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要條件是:字符模式必須能夠? 完全匹配 ?輸入字符串(而不是部

    2024年02月11日
    瀏覽(22)
  • Elasticsearch:wildcard - 通配符搜索

    Elasticsearch:wildcard - 通配符搜索

    Elasticsearch 是一個分布式、免費(fèi)和開放的搜索和分析引擎,適用于所有類型的數(shù)據(jù),例如文本、數(shù)字、地理空間、結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。 它基于 Apache Lucene 構(gòu)建,Apache Lucene 是一個全文搜索引擎,可用于各種編程語言。 由于其速度、可擴(kuò)展性以及對不同類型內(nèi)容進(jìn)行索引的

    2024年02月09日
    瀏覽(19)
  • gin的占位符:和通配符*

    gin的占位符:和通配符*

    在 Gin 路由中,可以使用一個通配符(*)或一個占位符(:)來捕獲 URL 的一部分。 通配符表示的整個路徑,并且會加上/。 如果通配符什么都不帶,則返回的是一個/。 占位符則是用來獲取一個路徑段的參數(shù): 但如果是占位符后面再跟路由,會報404 占位符注冊的路由以后,可

    2024年02月13日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包