国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

890-查找和替換模式

haobowd / 2081人閱讀

摘要:前言的的題目查找和替換模式,原題目描述如下你有一個(gè)單詞列表和一個(gè)模式,你想知道中的哪些單詞與模式匹配。如果存在字母的排列,使得將模式中的每個(gè)字母替換為之后,我們就得到了所需的單詞,那么單詞與模式是匹配的。

前言

LeetCode的Weekly Contest 98的題目查找和替換模式,原題目描述如下:

你有一個(gè)單詞列表 words 和一個(gè)模式  pattern,你想知道 words 中的哪些單詞與模式匹配。
如果存在字母的排列 p ,使得將模式中的每個(gè)字母 x 替換為 p(x) 之后,我們就得到了所需的單詞,那么單詞與模式是匹配的。
(回想一下,字母的排列是從字母到字母的雙射:每個(gè)字母映射到另一個(gè)字母,沒有兩個(gè)字母映射到同一個(gè)字母。)
返回 words 中與給定模式匹配的單詞列表。
你可以按任何順序返回答案。

示例:
輸入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
輸出:["mee","aqq"]
解釋:
"mee" 與模式匹配,因?yàn)榇嬖谂帕?{a -> m, b -> e, ...}。
"ccc" 與模式不匹配,因?yàn)?{a -> c, b -> c, ...} 不是排列。
因?yàn)?a 和 b 映射到同一個(gè)字母。

解題思路

這道題目其實(shí)就是需要用一個(gè)數(shù)據(jù)結(jié)構(gòu)去描述單詞和模式之間的映射關(guān)系,而且模式和單詞中的字母的關(guān)系是一對(duì)一,所以可以直接使用Map去解決這個(gè)問題。

實(shí)現(xiàn)代碼
    /**
     * 查找和替換模式
     * @param words
     * @param pattern
     * @return
     */
    public List findAndReplacePattern(String[] words, String pattern) {
        List result = new ArrayList<>();
        char[] patternChars = pattern.toCharArray();
        for (String word : words) {
            char[] wordChars = word.toCharArray();
            //是否匹配
            boolean match = true;
            //用于存儲(chǔ)映射關(guān)系的Map
            Map map = new HashMap<>();
            for (int i = 0; i < patternChars.length; i++) {
                char p = patternChars[i];
                char w = wordChars[i];
                if (map.containsKey(p)) {//模式中的字母是否已經(jīng)映射已經(jīng)被映射
                    char value = map.get(p);
                    if (value != w) {
                        match = false;
                        break;
                    }
                } else {
                    if(map.containsValue(w)){//判斷單詞中的字母是否被映射,防止模式多個(gè)字母都映射單詞中的同一個(gè)字母
                        match = false;
                        break;
                    }else {
                        map.put(p, w);
                    }
                }
            }
            if (match) {
                result.add(word);
            }
        }
        return result;
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/76797.html

相關(guān)文章

  • Javascript 正則表達(dá)式

    摘要:正則表達(dá)式對(duì)象通過內(nèi)置對(duì)象支持正則表達(dá)式。做法很簡(jiǎn)單,就是在量詞后添加一個(gè)即可分組分組或分組取值前瞻正則表達(dá)式是從文本頭部向尾部解析。 正則表達(dá)式 REGEXP對(duì)象 javascript通過內(nèi)置對(duì)象Regexp支持正則表達(dá)式。 兩種方法來創(chuàng)建Regexp對(duì)象。 1、字面量 var reg = /d{4}/g; // g 表示進(jìn)行全局替換 2、構(gòu)造函數(shù) var reg = new R...

    woshicixide 評(píng)論0 收藏0
  • 【Python3】基本數(shù)據(jù)類型-字符串(str)

    摘要:字符串常用功能移除空白分割長(zhǎng)度索引切片下面來詳細(xì)介紹下字符串首字母大寫將所有大寫變小寫支持多種國(guó)家語(yǔ)言將大寫變成小寫只支持英文文本居中參數(shù)表示總長(zhǎng)度參數(shù)空白處填充的字符長(zhǎng)度為左右填充,包含自身長(zhǎng)度表示傳入之在字符串中出現(xiàn)的次數(shù)參數(shù)要查找的值 字符串常用功能: 移除空白 分割 長(zhǎng)度 索引 切片 下面來詳細(xì)介紹下 ~ capitalize 字符串首字母大寫 name = xmzncc ...

    Awbeci 評(píng)論0 收藏0
  • JavaScript正則進(jìn)階之路——活學(xué)妙用奇淫正則表達(dá)式

    摘要:正則大法好,正則大法好,正則大法好,重要的事情說三遍。第二部分,這個(gè)部分是整個(gè)表達(dá)式的關(guān)鍵部分。學(xué)習(xí)正則如果還沒有系統(tǒng)學(xué)習(xí)正則表達(dá)式,這里提供一些網(wǎng)上經(jīng)典的教程供大家學(xué)習(xí)。正則表達(dá)式使用單個(gè)字符串來描述匹配一系列匹配某個(gè)句法規(guī)則的字符串。 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動(dòng)態(tài),大家一起多交流學(xué)習(xí),共同...

    BearyChat 評(píng)論0 收藏0
  • JavaScript正則進(jìn)階之路——活學(xué)妙用奇淫正則表達(dá)式

    摘要:正則大法好,正則大法好,正則大法好,重要的事情說三遍。第二部分,這個(gè)部分是整個(gè)表達(dá)式的關(guān)鍵部分。學(xué)習(xí)正則如果還沒有系統(tǒng)學(xué)習(xí)正則表達(dá)式,這里提供一些網(wǎng)上經(jīng)典的教程供大家學(xué)習(xí)。正則表達(dá)式使用單個(gè)字符串來描述匹配一系列匹配某個(gè)句法規(guī)則的字符串。 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動(dòng)態(tài),大家一起多交流學(xué)習(xí),共同...

    APICloud 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<