成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

884-兩句話中的不常見單詞

verano / 935人閱讀

摘要:句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。如果一個單詞在其中一個句子中只出現(xiàn)一次,在另一個句子中卻沒有出現(xiàn),那么這個單詞就是不常見的。返回所有不常用單詞的列表。

前言

LeetCode Weekly Contest 97的第一道題目,分值為3分。原題目要求如下:

給定兩個句子 A 和 B 。 (句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。)

如果一個單詞在其中一個句子中只出現(xiàn)一次,在另一個句子中卻沒有出現(xiàn),那么這個單詞就是不常見的。

返回所有不常用單詞的列表。

您可以按任何順序返回列表。

示例 1:

輸入:A = "this apple is sweet", B = "this apple is sour"
輸出:["sweet","sour"]
示例 2:

輸入:A = "apple apple", B = "banana"
輸出:["banana"]

提示:
0 <= A.length <= 200
0 <= B.length <= 200
A 和 B 都只包含空格和小寫字母。

解題思路

這個題目其實很簡單,解題步驟如下:
1.先統(tǒng)計每個單詞的出現(xiàn)次數(shù),生成以單詞和出現(xiàn)次數(shù)為元素的集合
2.獲取兩個集合不相交且集合元素中出現(xiàn)次數(shù)為1的元素

以示例1為例子:

獲取到的元素如下:

集合A
[{"this",1},{"apple",1},{"is",1},{"sweet",1}]
集合B
[{"this",1},{"apple",1},{"is",1},{"sour",1}]

2.我取不相交的部分的思路是先取出相交的部分集合C,然后分別取出集合A和集合B中集合C且出現(xiàn)次數(shù)不為1的元素:

集合C
[{"this",1},{"apple",1},{"is",1}]

結(jié)果集合
[{"sweet",1},{"sour",1}]

最后取出結(jié)果集合中的單詞即可
["sweet","sour"]
實現(xiàn)代碼
    public String[] uncommonFromSentences(String A, String B) {
        Map mapA = getCountMap(A);
        Map mapB = getCountMap(B);
        Set set = new HashSet<>();
        Set sameSet = new HashSet<>();
        //兩個集合中都出現(xiàn)的單詞
        for (String keyA : mapA.keySet()) {
            for (String keyB : mapB.keySet()) {
                if (keyA.equals(keyB)) {
                    sameSet.add(keyA);
                }
            }
        }
        calDiff(mapA, sameSet, set);
        calDiff(mapB, sameSet, set);
        return set.toArray(new String[set.size()]);
    }

    /**
     * 返回句子中每個單詞的出現(xiàn)次數(shù)統(tǒng)計情況,key為單詞,value為出現(xiàn)次數(shù)
     * @param str
     * @return
     */
    private Map getCountMap(String str) {
        Map map = new HashMap<>();
        if (str != null && str.length() > 0) {
            String[] strs = str.split(" ");
            for (String s : strs) {
                if (map.containsKey(s)) {
                    map.put(s, map.get(s) + 1);
                } else {
                    map.put(s, 1);
                }
            }
        }
        return map;
    }

    /**
     * 取出Map中不存在重復(fù)集合中的key,且key的value不為1
     * @param map
     * @param sameSet 重復(fù)集合
     * @param set
     */
    private void calDiff(Map map, Set sameSet, Set set) {
        if (!map.isEmpty()) {
            Iterator> it = map.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry entry = it.next();
                String key = entry.getKey();
                if (!sameSet.contains(key) && entry.getValue() == 1) {
                    set.add(key);
                }
            }
        }
    }

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76705.html

相關(guān)文章

  • Leetcode PHP題解--D28 884. Uncommon Words from Two S

    摘要:題目鏈接題目分析返回給定的兩個句子中唯一不同的單詞。思路先把兩個句子分別按空格分割成數(shù)組,再計算兩個數(shù)組的差集,即可得知兩個句子的差異。測試后發(fā)現(xiàn)沒通過和這個測試組合。系統(tǒng)提示應(yīng)當(dāng)返回。因為用了函數(shù),因此鍵為單詞,值為出現(xiàn)次數(shù)。 884. Uncommon Words from Two Sentences 題目鏈接 884. Uncommon Words from Two Senten...

    jcc 評論0 收藏0
  • 【數(shù)據(jù)結(jié)構(gòu)_浙江大學(xué)MOOC】第二講 線性結(jié)構(gòu)

    摘要:應(yīng)直接使用原序列中的結(jié)點,返回歸并后的帶頭結(jié)點的鏈表頭指針。要求分別計算兩個多項式的乘積與和,輸出第一項為乘積的系數(shù)和指數(shù),第二行為和的系數(shù)和指數(shù)。選定了表示方法后,考慮數(shù)據(jù)結(jié)構(gòu)設(shè)計。選擇鏈表在設(shè)計數(shù)據(jù)結(jié)構(gòu)的時候有系數(shù)指數(shù)和指針結(jié)構(gòu)指針。 函數(shù)題給出編譯器為 C(gcc) 的解答,編程題給出編譯器 C++(g++) 或 Python(python3) 的解答。 函數(shù)題 兩個有序鏈表序...

    luxixing 評論0 收藏0
  • 一個關(guān)于ollie的論文解讀,論文目的在于知識圖譜三元組提取

    摘要:前言模型作用為提取三元組,基于英文,目前嘗試改為中文。論文題目名稱叫代碼地址論文核心論文核心主要解決個問題,一個是基于動詞結(jié)構(gòu)之外的三元組提取,例如形容詞等,二是基于上下文的三元組提取,舉例說明。 前言:模型作用為提取三元組,基于英文,目前嘗試改為中文。論文題目名稱叫《Open Language Learning for Information Extraction》,代碼地址:h...

    MobService 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<