? ? 力扣熱題:兩句話中的不常見單詞
開篇
? 今天是備戰藍橋杯的第19天,今天到目前刷了4道力扣算法題。其中,這道題是對我來說收獲最大的一道,讓我更熟練地掌握了一些算法題中方法,于是來與大家分享一下。
題目鏈接: 884.兩句話中的不常見單詞
題目描述
代碼思路
? 題目其實可以把不常見單詞理解成在兩個句子中總共只出現一次的單詞。那顯而易見,我們只要用哈希表統計出每個單詞出現的次數,題目就迎刃而解。
這道題的代碼中運用了許多方法,列出來給大家看看。
1.String類中的split()
2.map.getOrDefault( , )
3.遍歷哈希表
for(Map.Entry<String, Integer> entry : map.entrySet()){//if(entry.getValue() == 1) list.add(entry.getKey());
}
代碼純享版
class Solution {public String[] uncommonFromSentences(String s1, String s2) {String[] arr1 = s1.split(" ");String[] arr2 = s2.split(" ");Map<String, Integer> map = new HashMap<>();for(String str : arr1){// if(map.containsKey(str)) map.put(str, map.get(str) + 1);// else map.put(str, 1);map.put(str, map.getOrDefault(str, 0) + 1);}for(String str : arr2){// if(map.containsKey(str)) map.put(str, map.get(str) + 1);// else map.put(str, 1);map.put(str, map.getOrDefault(str, 0) + 1);}List<String> list = new ArrayList<>(); for(Map.Entry<String, Integer> entry : map.entrySet()){if(entry.getValue() == 1) list.add(entry.getKey());}String[] arr3 = new String[list.size()];int i = 0;for(String str : list){arr3[i++] = str;}return arr3;}
}
代碼逐行解析版
class Solution {public String[] uncommonFromSentences(String s1, String s2) {String[] arr1 = s1.split(" "); //利用split方法,利用空格把句子變成單詞數組String[] arr2 = s2.split(" ");Map<String, Integer> map = new HashMap<>();//創建哈希表,保存單詞及其出現的次數for(String str : arr1){ //遍歷句子1的每一個單詞// if(map.containsKey(str)) map.put(str, map.get(str) + 1);// else map.put(str, 1);map.put(str, map.getOrDefault(str, 0) + 1); //利用這句話可以直接統計句子1所有單詞,比上面的if-else簡潔}for(String str : arr2){//與上面代碼同理// if(map.containsKey(str)) map.put(str, map.get(str) + 1);// else map.put(str, 1);map.put(str, map.getOrDefault(str, 0) + 1);}List<String> list = new ArrayList<>(); //創建動態數組for(Map.Entry<String, Integer> entry : map.entrySet()){ //遍歷哈希表,把值為1的鍵存到動態數組中if(entry.getValue() == 1) list.add(entry.getKey());}String[] arr3 = new String[list.size()]; //創建數組int i = 0;for(String str : list){ //把動態數組里的元素轉移到數組中arr3[i++] = str;}return arr3; //返回數組}
}
結語
? 如果對這道題的分享對您有幫助,點個關注,我會每天分享力扣題的講解,與大伙兒一起向前邁進!