成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Unique Word Abbreviation LC解題記錄

curried / 1744人閱讀

摘要:題目內(nèi)容這題也是鎖住的,通過率只有左右。另外,字典里面只有兩個(gè)的時(shí)候,也是返回。最后再說兩句距離上一篇文章過了一段時(shí)間了,這段時(shí)間搬家再適應(yīng)新環(huán)境,解決心理問題。

題目內(nèi)容
An abbreviation of a word follows the form . Below are some examples of word abbreviations:

a) it                      --> it    (no abbreviation)

     1
b) d|o|g                   --> d1g

              1    1  1
     1---5----0----5--8
c) i|nternationalizatio|n  --> i18n

              1
     1---5----0
d) l|ocalizatio|n          --> l10n
Assume you have a dictionary and given a word, find whether its abbreviation is unique in the dictionary. 
A word abbreviation is unique if no other word from the dictionary has the same abbreviation.

Example: 
Given dictionary = [ "deer", "door", "cake", "card" ]

isUnique("dear") -> false
isUnique("cart") -> true
isUnique("cane") -> false
isUnique("make") -> true

這題也是鎖住的,通過率只有15%左右。這讓我不得其解,為啥一道easy級(jí)別的題目會(huì)有如此低的Pass?是人性的扭曲還是道德的淪喪,美國沒有《走近科學(xué)》,只能自己動(dòng)手寫。

解決思路

這題比較考察洋文水平,掃一眼要求很容易看出,應(yīng)該把已有的dictionary的縮略詞都縮出來,存到一個(gè)地方,剛開始用了個(gè)Set。再調(diào)用isUnique的時(shí)候,用目標(biāo)字符串壓縮后和Set里面的元素做比較。有相同的就返回false,沒有就是true。
但是,
后來出了問題,因?yàn)槟繕?biāo)詞可能和字典里面的詞一致,比如字典里只有有"hello",調(diào)用isUnique檢查hello的時(shí)候,應(yīng)該返回true,因?yàn)闆]有其他詞和h3o一樣了。另外,字典里面只有兩個(gè)hello的時(shí)候,也是返回true。所以這題的關(guān)鍵點(diǎn)在于『no other word』

code
public class ValidWordAbbr {
    Map> map = new HashMap<>();
    public ValidWordAbbr(String[] dictionary) {
        //每個(gè)詞都輪一遍
        for (String str : dictionary) {
            String abrv = abbrev(str);
            if (!map.containsKey(abrv)){
                ArrayList list = new ArrayList<>();
                list.add(str);
                map.put(abrv,list);
            }
            else {
                ArrayList list = map.get(abrv);
                //這里的判斷是過濾相同的詞
                if (!list.contains(str)) list.add(str);
                map.put(abrv, list);
            }
        }
    }

    public boolean isUnique(String word) {
        String abrv = abbrev(word);
        if (map.containsKey(abrv)){
            //先看相同壓縮串是不是代表多個(gè)詞,一旦多了那肯定不行
            if (map.get(abrv).size() > 1) return false;
            //如果只有1個(gè),那就對(duì)比一下這兩個(gè)詞是不是一樣的,一樣就行
            else if (map.get(abrv).get(0).equals(word)) return true;
            return false;
        }
        //其他情況肯定是都行。
        return true;
    }
    //把字符串變成壓縮串
    public String abbrev(String word){
        if(word == null || word.length() < 3){
            return word;
        }
        //把頭,數(shù)字,尾巴連起來。
        StringBuilder sb = new StringBuilder();
        int len = word.length()-2;
        String slen = String.valueOf(len);
        sb.append(word.charAt(0));
        sb.append(slen);
        sb.append(word.charAt(word.length()-1));
        return sb.toString();
    }
    //做測試用
    public static void main(String[] args) {
        String[] test = {"hello", "a", "a"};
        ValidWordAbbr vwa = new ValidWordAbbr(test);
        System.out.print(vwa.isUnique("a"));
    }
}
復(fù)雜度分析

截至目前,我還不太清楚這種設(shè)計(jì)題會(huì)不會(huì)特別在意復(fù)雜度,可能更注重corner case。這題遍歷一遍字典就可以了,所以復(fù)雜度是O(n)。需要注意的是no other word這個(gè)說法,讓我多付出了兩次submit的代價(jià),不過還好比15%高一些。

最后再說兩句

距離上一篇文章過了一段時(shí)間了,這段時(shí)間搬家再適應(yīng)新環(huán)境,解決心理問題。從這一篇開始將會(huì)繼續(xù)保持更新進(jìn)度。

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/65064.html

相關(guān)文章

  • Word Abbreviation

    摘要:鏈接注意第一個(gè)數(shù)字是的情況,這種也是不合法的。還有一個(gè)注意的就是要想和有相同的縮寫,長度必須和它相同,所以只保留長度相同的。注意剪枝,當(dāng)前長度已經(jīng)超過就不需要繼續(xù)了。二進(jìn)制的做法是這樣的,先對(duì)字典里面的單詞進(jìn)行處理。 Valid Word Abbreviation 鏈接:https://leetcode.com/problems... 注意第一個(gè)數(shù)字是0的情況,[a, 01]這種也是不...

    Y3G 評(píng)論0 收藏0
  • Compare Version Numbers LC解題記錄

    摘要:題目內(nèi)容比較不同的版本號(hào),并根據(jù)大小返回,或。并提醒版本意思是第二代的第五次升級(jí),反正不是數(shù)字上的的意思。代碼拆分兩個(gè)字符串這里用最大的長度作為循環(huán)范圍因?yàn)檠h(huán)范圍是最大長度,所以缺的位置補(bǔ)復(fù)雜度分析,和分別是兩個(gè)字符串的長度。 題目內(nèi)容 比較不同的版本號(hào),并根據(jù)大小返回-1,1或0。并提醒2.5版本意思是第二代的第五次升級(jí),反正不是數(shù)字上的2.5的意思。 解決思路 直觀的想法是,找到...

    wanglu1209 評(píng)論0 收藏0
  • Strobogrammatic Number 系列 LC解題記錄(未完成)

    摘要:所以這題先建立一個(gè)對(duì)應(yīng)的,然后掃一遍字符串就可以了。復(fù)雜度分析第二題題目內(nèi)容解決思路一看關(guān)鍵詞,通常都是,深搜一遍,挖地三尺,雁過拔毛。復(fù)雜度分析第三題題目內(nèi)容解決思路復(fù)雜度分析 該系列共三道題,Company Tag只有一個(gè)Google,那就必須要做了。 第一題題目內(nèi)容 A strobogrammatic number is a number that looks the same ...

    王晗 評(píng)論0 收藏0
  • Next Permutation LC解題記錄

    摘要:解決思路有一首歌名是下一個(gè)天亮,不過和這道題沒什么關(guān)系。根據(jù)這兩個(gè)例子猜測,需要兩個(gè)輔助的方法,一個(gè)是交換,另一個(gè)是逆序。所以第一步的思路就是從后往前找,找一對(duì)兒符合要求的相鄰數(shù)字。這道題的關(guān)鍵在于,找到規(guī)律,數(shù)學(xué)上的規(guī)律。 題目內(nèi)容 給出一個(gè)數(shù)組,重新排列,返回『下一個(gè)排列,題目的描述中還給出了幾個(gè)例子。 解決思路 有一首歌名是下一個(gè)天亮,不過和這道題沒什么關(guān)系。還有一類題是已有一堆...

    dockerclub 評(píng)論0 收藏0
  • Binary Tree Upside Down LC解題記錄

    摘要:題目內(nèi)容因?yàn)檫@道題被鎖住了,在寫這篇文章時(shí)還有天就要過期了,把原題也貼上來。題目要求,樹的結(jié)構(gòu)是每個(gè)當(dāng)右邊子節(jié)點(diǎn)的,它肯定有個(gè),就是它的根節(jié)點(diǎn)肯定有個(gè)左邊子節(jié)點(diǎn),也就是說它是二胎。遞歸設(shè)置終止條件,在空節(jié)點(diǎn)或最左邊的葉子處終止。 題目內(nèi)容 Given a binary tree where all the right nodes are either leaf nodes with a...

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

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

0條評(píng)論

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