傳送門
外國友人仿照中國字謎設計了乙個英文版猜字謎小遊戲,請你來猜猜看吧。字謎的迷面 puzzle 按字串形式給出,如果乙個單詞 word 符合下面兩個條件,那麼它就可以算作謎底:
單詞 word 中包含謎面 puzzle 的第乙個字母。
單詞 word 中的每乙個字母都可以在謎面 puzzle 中找到。
例如,如果字謎的謎面是 "abcdefg",那麼可以作為謎底的單詞有 "faced", "cabbage", 和 "baggage";而 "beefed"(不含字母 "a")以及 "based"(其中的 "s" 沒有出現在謎面中)。
返回乙個答案陣列 answer,陣列中的每個元素 answer[i] 是在給出的單詞列表 words 中可以作為字謎迷面 puzzles[i] 所對應的謎底的單詞數目。示例:
輸入:words = ["aaaa","asas","able","ability","actt","actor","access"],
puzzles = ["aboveyz","abrodyz","abslute","absoryz","actresz","gaswxyz"]
輸出:[1,1,3,2,4,0]
解釋:1 個單詞可以作為 "aboveyz" 的謎底 : "aaaa"
1 個單詞可以作為 "abrodyz" 的謎底 : "aaaa"
3 個單詞可以作為 "abslute" 的謎底 : "aaaa", "asas", "able"
2 個單詞可以作為 "absoryz" 的謎底 : "aaaa", "asas"
4 個單詞可以作為 "actresz" 的謎底 : "aaaa", "asas", "actt", "access"
沒有單詞可以作為 "gaswxyz" 的謎底,因為列表中的單詞都不含字母 'g'。
1 <= words.length <= 10^5
4 <= words[i].length <= 50
1 <= puzzles.length <= 10^4
puzzles[i].length == 7
words[i][j], puzzles[i][j] 都是小寫英文本母。
每個 puzzles[i] 所包含的字元都不重複。
*/
int* findnumofvalidwords(char ** words, int wordssize, char ** puzzles, int puzzlessize, int* returnsize)
本題所需要的是對於元素的核查,不考慮遂於元素的個數核查,只考慮對於元素是否存在的核查即可。謎面與謎底之間的聯絡是:謎底的組成字母一定在謎面內存在。如果存在對於元素的核查裡就可以加1處理來統計對應的謎面下能推得的謎底的個數。
題解傳送門
struct unordered_map ;
int* findnumofvalidwords(char** words, int wordssize, char** puzzles, int puzzlessize, int* returnsize)
if (__builtin_popcount(mask) <= 7) else }}
int* ans = malloc(sizeof(int) * puzzlessize);
*returnsize = 0;
for (int i = 0; i < puzzlessize; i++)
// }
// mask |= (1 << (puzzles[i][0] - 'a'));
// struct unordered_map* tmp;
// hash_find_int(frequency, &mask, tmp);
// if (tmp != null)
// }
// 列舉子集方法二
力扣 1178 猜字謎 位運算 思維
思路 看完題目會發現關鍵點是乙個單詞 現的字元種類,和個數沒有關係,那麼我們可以用位運算表示某個單詞含有的字元種類。具體做法是,如果它含有小寫字母x xx,我們就可以把它二進位制表示的第x a x a x a 位置為1 11。這樣就將字串變成了整數,接下來構建乙個雜湊表,記錄某個整數所對應的字串個數...
力扣c語言實現 682 棒球比賽
原題目連線 你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個...
力扣c語言實現 7 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...