摘要:句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。如果一個單詞在其中一個句子中只出現一次,在另一個句子中卻沒有出現,那么這個單詞就是不常見的。返回所有不常用單詞的列表。
前言
LeetCode Weekly Contest 97的第一道題目,分值為3分。原題目要求如下:
給定兩個句子 A 和 B 。 (句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。)解題思路如果一個單詞在其中一個句子中只出現一次,在另一個句子中卻沒有出現,那么這個單詞就是不常見的。
返回所有不常用單詞的列表。
您可以按任何順序返回列表。
示例 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.先統計每個單詞的出現次數,生成以單詞和出現次數為元素的集合
2.獲取兩個集合不相交且集合元素中出現次數為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且出現次數不為1的元素:
集合C [{"this",1},{"apple",1},{"is",1}] 結果集合 [{"sweet",1},{"sour",1}] 最后取出結果集合中的單詞即可 ["sweet","sour"]實現代碼
public String[] uncommonFromSentences(String A, String B) { MapmapA = getCountMap(A); Map mapB = getCountMap(B); Set set = new HashSet<>(); Set sameSet = new HashSet<>(); //兩個集合中都出現的單詞 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()]); } /** * 返回句子中每個單詞的出現次數統計情況,key為單詞,value為出現次數 * @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中不存在重復集合中的key,且key的value不為1 * @param map * @param sameSet 重復集合 * @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); } } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76705.html
摘要:題目鏈接題目分析返回給定的兩個句子中唯一不同的單詞。思路先把兩個句子分別按空格分割成數組,再計算兩個數組的差集,即可得知兩個句子的差異。測試后發現沒通過和這個測試組合。系統提示應當返回。因為用了函數,因此鍵為單詞,值為出現次數。 884. Uncommon Words from Two Sentences 題目鏈接 884. Uncommon Words from Two Senten...
摘要:應直接使用原序列中的結點,返回歸并后的帶頭結點的鏈表頭指針。要求分別計算兩個多項式的乘積與和,輸出第一項為乘積的系數和指數,第二行為和的系數和指數。選定了表示方法后,考慮數據結構設計。選擇鏈表在設計數據結構的時候有系數指數和指針結構指針。 函數題給出編譯器為 C(gcc) 的解答,編程題給出編譯器 C++(g++) 或 Python(python3) 的解答。 函數題 兩個有序鏈表序...
摘要:前言模型作用為提取三元組,基于英文,目前嘗試改為中文。論文題目名稱叫代碼地址論文核心論文核心主要解決個問題,一個是基于動詞結構之外的三元組提取,例如形容詞等,二是基于上下文的三元組提取,舉例說明。 前言:模型作用為提取三元組,基于英文,目前嘗試改為中文。論文題目名稱叫《Open Language Learning for Information Extraction》,代碼地址:h...
閱讀 2382·2021-10-09 09:41
閱讀 3172·2021-09-26 09:46
閱讀 835·2021-09-03 10:34
閱讀 3151·2021-08-11 11:22
閱讀 3365·2019-08-30 14:12
閱讀 711·2019-08-26 11:34
閱讀 3344·2019-08-26 11:00
閱讀 1750·2019-08-26 10:26