leetcode刷題之1160拼寫單詞 java題解(超詳細)
題目如下圖所示:
一開始有點懵,然後想著暴力求解的話,用words裡面的每個單詞去chars裡面去查詢,如果全都找到了就加一,好像有點蠢,後面參考了一下網上的一些想法,去比較words裡面每個字母的個數,是不是比chars裡面字母的個數小或者等於,是的話,就能組成
自己試了一下,還可以:
public int countCharacters(String[] words, String chars) {
Map<Character, Integer> map = new HashMap<>();
int realResult = 0;
boolean[] isInclude = new boolean[words.length];
for (int i = 0; i < words.length; i++) {
isInclude[i] = true;
}
char[] charArray = chars.toCharArray();
for (int i = 0; i < charArray.length; i++) {
map.put(charArray[i], map.getOrDefault(charArray[i], 0) + 1);
}
for(int i = 0; i < words.length; ++i) {
char[] stemp = words[i].toCharArray();
Map<Character, Integer> tempMap = new HashMap<>();
for(int j = 0; j < stemp.length; ++j) {
tempMap.put(stemp[j], tempMap.getOrDefault(stemp[j], 0) + 1);
if(!map.containsKey(stemp[j])) {
isInclude[i] = false;
break;
}
}
for(int j = 0; j < stemp.length; ++j) {
if(!isInclude[i]) {
break;
}
if(map.containsKey(stemp[j]) && map.get(stemp[j]) < tempMap.get(stemp[j])) {
isInclude[i] = false;
break;
}
}
}
for (int i = 0; i < words.length; i++) {
if(isInclude[i]) {
realResult += words[i].length();
}
}
return realResult;
}
}
一開始只是判斷了是否能夠包括,忘記判斷字母的個數了
這樣寫確實有一點點複雜,不過還好,用了最常見的資料結構
好了,今天先到這裡了
相關文章
- LeetCode1160.拼寫單詞(Java+暴力+HashMap)LeetCodeJavaHashMap
- LeetCode題解:127. 單詞接龍,雙向BFS,JavaScript,詳細註釋LeetCodeJavaScript
- LeetCode刷題之第701題LeetCode
- [LeetCode題解]79. 單詞搜尋LeetCode
- java刷題時常用容器詳解Java
- 一份超詳細的Java問題排查工具單Java
- 超詳細的Java面試題總結(三)之Java集合篇常見問題Java面試題
- leetcode演算法題解(Java版)-16-動態規劃(單詞包含問題)LeetCode演算法Java動態規劃
- java 英文單詞拼寫糾正框架(Word Checker)Java框架
- Tarjan縮點題單 刷題題解
- LeetCode 刷題—樹LeetCode
- LeetCode刷題 堆LeetCode
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- LeetCode題解(0692):前K個高頻單詞(Python)LeetCodePython
- 【LeetCode刷題】896. 單調數列LeetCode
- LeetCode刷題記錄與題解(C++版本)LeetCodeC++
- leetcode 刷題之深度優先搜尋LeetCode
- 「翻轉字串」python之leetcode刷題|004字串PythonLeetCode
- Java註解最全詳解(超級詳細)Java
- Leetcode刷題準備LeetCode
- LeetCode刷題—陣列LeetCode陣列
- Leetcode刷題分類LeetCode
- LeetCode 刷題筆記LeetCode筆記
- LeetCode刷題記錄LeetCode
- leetcode刷題筆記LeetCode筆記
- 如何使用leetcode刷題LeetCode
- 【LeetCode】290. Word Pattern 單詞規律(Easy)(JAVA)每日一題LeetCodeJava每日一題
- Leetcode刷題中關於java的一些小問題LeetCodeJava
- LeetCode 刷題指南(一):為什麼要刷題LeetCode
- Leetcode刷題之 【最近的請求次數】LeetCode
- leetcode刷題記錄 661~LeetCode
- Leetcode刷題系列彙總LeetCode
- leetcode刷題筆記605LeetCode筆記
- Leetcode刷題——求眾數LeetCode
- LeetCode 刷題記錄(16、17、18)—Java語言LeetCodeJava
- leetcode排序專題演算法刷題LeetCode排序演算法
- LeetCode刷題進階之重新排列字串(1528)LeetCode字串